示例#1
0
void main(){
LinkList L;
ElemType e;
int i,n;
printf("(一)创建一个带头节点的空的单链表\n");
CreateList_L(L);
 printf("将学生的信息输入到顺序表!\n");
   printf("请输入学生人数!\n");
	scanf("%d",&n);
printf("(二)依次采用尾插法插入元素!\n");
  for(i=1;i<=n;i++){
	   printf("请输入第%d个学生的信息:姓名,学号,分数\n",i);
		   scanf("%s%d%d",e.name,&e.num,&e.score);
	    ListInsert_L(L,i,e);}
printf("(三)这%d个学生的信息为:\n",n);
printf("姓名        学号     分数\n");
for(i=1;i<=n;i++)
{GetElem_L(L,i,e);
printf("%-10s %4d %4d\n",e.name,e.num,e.score);
}
printf("(四)顺序表L为%s\n",ListEmpty_L(L)?"空":"非空");
printf("(五)顺序表的长度=%d\n",ListLength(L));
printf("(六)请输入要删除元素的位置\n");
scanf("%d",&i);
ListDelete_L(L,i,e);
printf("删除的这个元素为:\n");
printf("%-10s %4d %4d\n",e.name,e.num,e.score);
printf("(七)请输入要插入元素的位置及元素内容\n");
scanf("%d%s%d%d",&i,e.name,&e.num,&e.score);
ListInsert_L(L,i,e);
printf("此时顺序表L中元素为:\n");
for(i=1;i<=ListLength(L);i++){
	GetElem_L(L,i,e);
	printf("%-10s %4d %4d\n",e.name,e.num,e.score);
}

printf("(八)释放顺序表\n");
DestroyList_L(L);

}
//删除
int LinkListDelete_L(LinkList &L,int i)
{
	//i 为 第几个 节点 的意思
	LNode *p,*q;
	p = GetElem_L(L,i-1);//取出待删除前一个节点

	if(!p) return ERROR;//删除位置不合理

	q = p->next;
	p->next = q->next;//

	free(q);
	return OK;
	 
}
//插入
int LinkListInsert_L(LinkList &L,int i,ElemType x)
{
	void copyElem(ElemType &s,ElemType &x);//声明函数
	LNode * p,* s;
	p = GetElem_L(L,i);//第 i 个元素之后插入新元素p
	if(!p) return ERROR;

	s = (LNode *)malloc(sizeof(LNode));
	if(!s) return ERROR;

	copyElem(s->elem,x);//复制data

	s->next = p->next;
	p->next = s;
	return OK;

}
示例#4
0
//对线性表的各个功能函数做测试
void ListTest()
{
	LinkList La,Lb,Lc;
	int i;
	ElemType temp;

	LinkList p;
	int j;

	CreatList_L( La, 5);
	printf("the list is:");
	for ( i=1; i<6; i++ )
	{
		GetElem_L( La, i, temp );
		printf("%d ",temp);
	}

	if ( ListInsert_L( La, 3,77) )
	{
		printf("\nthe insert list is:");
		for ( i=1; i<7; i++ )
		{
			GetElem_L( La, i, temp );
			printf("%d ",temp);
		}
	}
	
	if ( ListDelet_L( La, 3,temp) )
	{
		printf("\nthe delet list is:");
		for ( i=1; i<6; i++ )
		{
			GetElem_L( La, i, temp );
			printf("%d ",temp);
		}
	}

	
	CreatList_L( Lb, 5);
	printf("\n the list a is:");
	for ( i=1; i<6; i++ )
	{
		GetElem_L( La, i, temp );
		printf("%d ",temp);
	}
	printf("\n the list b is:");
	for ( i=1; i<6; i++ )
	{
		GetElem_L( Lb, i, temp );
		printf("%d ",temp);
	}
	MergeList_L( La, Lb, Lc);
	printf("\n the list c is:");
	for ( i=1; i<11; i++ )
	{
		GetElem_L( Lc, i, temp );
		printf("%d ",temp);
	}


}