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; }
//对线性表的各个功能函数做测试 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); } }