//Merge1 void MergeList1(SLinkList L) { int n=10; int i=0; ElemType e; int j=0; InitList(L); printf("请输入A中数据的个数:"); scanf("%d",&i); if(i>0) n=i; for(i=0;i<n;i++) { loop: scanf("%d",&e); if(!LocateElem(L,e,compare)) ListInsert(L,i+1,e); else { printf("已存在,请重新输入:"); goto loop; } } printf("遍历链表"); TraverseList(L,visit); printf("\n"); printf("请输入B中数据的个数:"); scanf("%d",&i); if(i>0) n=i; for(i=0;i<n;i++) { scanf("%d",&e); if(!(j=LocateElem(L,e,compare))) { ListInsert(L,ListLength(L)+1,e); } else { ListDelete(L,j,e); } } printf("遍历链表"); TraverseList(L,visit); printf("\n"); }
int main(void) { /// create list SqList List; InitList(&List); /// insert element to list ListInsert(&List, 1, 1); ListInsert(&List, 2, 2); ListInsert(&List, 3, 3); ListInsert(&List, 4, 4); ListInsert(&List, 5, 5); /// locate element printf("element %d is in %d\n", 4, LocateElem(&List, 4)); /// list length int length = ListLength(&List); printf("List length is %d\n", length); /// get list element int i, element; for (i = 1; i <= length; i++) { GetElem(&List, i, &element); printf("element in %d is %d\n", i, element); } /// delect element from list ListDelete(&List, 4, &element); printf("deleted element in %d is %d\n", 4, element); /// clear list ClearList(&List); printf("List empty is %d\n", ListEmpty(&List)); return EXIT_SUCCESS; }
void main() { SqList *L; ElemType e; printf("(1)初始化顺序表L\n"); InitList(L); printf("(2)依次采用尾插法插入a,b,c,d,e元素\n"); ListInsert(L,1,'a'); ListInsert(L,2,'b'); ListInsert(L,3,'c'); ListInsert(L,4,'d'); ListInsert(L,5,'e'); printf("(3)输出顺序表L:"); DispList(L); printf("(4)顺序表L长度=%d\n",ListLength(L)); printf("(5)顺序表L为%s\n",(ListEmpty(L)?"空":"非空")); GetElem(L,3,e); printf("(6)顺序表L的第3个元素=%c\n",e); printf("(7)元素a的位置=%d\n",LocateElem(L,'a')); printf("(8)在第4个元素位置上插入f元素\n"); ListInsert(L,4,'f'); printf("(9)输出顺序表L:"); DispList(L); printf("(10)删除L的第3个元素\n"); ListDelete(L,3,e); printf("(11)输出顺序表L:"); DispList(L); printf("(12)释放顺序表L\n"); DestroyList(L); }
void main() { DLinkList *h; ElemType e; printf("(1)初始化循环双链表h\n"); InitList(h); printf("(2)依次采用尾插法插入a,b,c,d,e元素\n"); ListInsert(h,1,'a'); ListInsert(h,2,'b'); ListInsert(h,3,'c'); ListInsert(h,4,'d'); ListInsert(h,5,'e'); printf("(3)输出循环双链表h:"); DispList(h); printf("(4)循环双链表h长度=%d\n",ListLength(h)); printf("(5)循环双链表h为%s\n",(ListEmpty(h)?"空":"非空")); GetElem(h,3,e); printf("(6)循环双链表h的第3个元素=%c\n",e); printf("(7)元素a的位置=%d\n",LocateElem(h,'a')); printf("(8)在第4个元素位置上插入f元素\n"); ListInsert(h,4,'f'); printf("(9)输出循环双链表h:"); DispList(h); printf("(10)删除h的第3个元素\n"); ListDelete(h,3,e); printf("(11)输出循环双链表h:"); DispList(h); printf("(12)释放循环双链表h\n"); DestroyList(h); }
int main(void) { ElemType site[11] = { 'a', 'n', 'o', 't', 'h', 'e', 'r', 'h', 'o', 'm', 'e' }; LinkList *Link, *LinkR; ElemType e; CreateListF(Link, site, 11); CreateListR(LinkR, site, 11); DispList(Link); DispList(LinkR); DestroyList(LinkR); if (ListEmpty(Link)) { printf("List is empty\n"); } else { printf("List isn't empty\n"); } printf("ListLength: %d\n", ListLength(Link)); GetElem(Link, ListLength(Link), e); ListInsert(Link, 2, e); DispList(Link); ListDelete(Link, 3, e); DispList(Link); printf("The location of 'o' is %d\n", LocateElem(Link, 'o')); DestroyList(Link); return 0; }
Status NextElem_Sq(SqList *L,ElemType cur_e,ElemType *next_e){ if(!L) return Error; if(!L->a) return Error; int i=LocateElem(L, cur_e); if(i==Error||i==Fail||i==L->length-1) return Fail; *next_e=*((L->a)+i); return Ok; }
Status PriorElem(SqList *L,ElemType cur_e,ElemType *pre_e){ if(!L) return Error; if(!L->a) return Error; int i=LocateElem(L, cur_e); if(i==Error||i==Fail||i==1) return Fail; *pre_e=*(L->a+i-1); return Ok; }
int main() { List list; InitList(&list); printf("创建线性表后线性表的当前长度:%d\n", list.length); printf("ListTraverse:"); //initialize int j; for(j = 0; j < 10; j++) { list.elem[j] = j; list.length++; } printf("after sqlist inited: %d=====%d\n", list.listsize, list.length); //test DestoryList /*DestoryList(&list); printf("After Destory List %d=====%d\n", list.listsize, list.length);*/ //test ListEmpty(List *list); printf("Is List Empty? %s\n", ListEmpty(&list) ? "true" : "false"); //test GetElem(List *list, int i, ElemType *e) ElemType e1; if(GetElem(&list, 3, &e1) ) { printf("Get index 3 element from list: %d\n", e1); } /*for(j = 0; j < list.length; j++) { if(list.elem[j] == 3) printf("i found %d in list index %d\n", 3, j); }*/ //test LocateElem ElemType e2 = 3; int position = LocateElem(&list, &e2); printf("%d\n", position); if (position >= 0) printf("I find e2 in list, it's index is %d\n", position); else printf("Not Found!\n"); //test ListInsert(List *list, int i, ElemType *e); ElemType e3 = 100; if(ListInsert(&list, 2, &e3)) { ListTraverse(&list); } //test BOOL ListDelete ElemType e4; if(ListDelete(&list, 2, &e4)) { printf("Delete index %d ElemType %d success\n", 1, e4); } ListTraverse(&list); return 0; }
//插入新的项并在链表里寻找与之指数相等的项,找到则相加并调用DeleteNext, 未找到则调用OrderInsert正常插入 void OrderInsertMerge(Linklist &L, term e, int (*comp)(term, term)){ Node pre, get; if (LocateElem(L, e, pre, get, comp)){ get -> data.coef += e.coef; if (!get -> data.coef) //若相加后的系数为0则将此节点删除 DeleteNext(L, pre); //用此节点的前驱指针删除此节点 } else OrderInsert(L, e, comp); }
void unionL(SqList *La,SqList Lb) { ElemType e; int La_len=ListLength(*La); int Lb_len=ListLength(Lb); for (int i=1;i<=Lb_len;i++) { GetElem(Lb,i,&e); if (!LocateElem(*La,e)) ListInsert(La,++La_len,e); } }
void Union(List &La, List Lb) { // 算法2.1 // 将所有在线性表Lb中但不在La中的数据元素插入到La中 int La_len,Lb_len,i; ElemType e; La_len = ListLength(La); // 求线性表的长度 Lb_len = ListLength(Lb); for (i=1; i<=Lb_len; i++) { GetElem(Lb, i, e); // 取Lb中第i个数据元素赋给e if (!LocateElem(La, e, equal)) // La中不存在和e相同的数据元素 ListInsert(La, ++La_len, e); // 插入 } } // union
void unionL(SqList *La, SqList Lb) /* union Lb to La */ { int La_len, Lb_len, i; ElemType e; La_len = ListLength(*La); Lb_len = ListLength(Lb); for (i = 1; i <= Lb_len; ++i) { GetElem(Lb, i, &e); if (!LocateElem(*La, e)) ListInsert(La, ++La_len, e); } }
void Union(SqList &La, SqList &Lb) { //将所有在线性表Lb中但不在La中的数据元素插入到La中 ElemType e; //int La_len, Lb_len; int i; //La_len = ListLength(La); //Lb_len = ListLength(Lb); for ( i = 1; i <= Lb.length; i++ ) { GetElem(Lb, i, e); if ( !LocateElem(La, e, equal) ) ListInsert(La, ++La.length, e); } }
//#endif //******************************************************************** //删除A中出现B的元素的函数实现 void DelElem(SeqList *A,SeqList B) { int i,flag,pos; DataType e; for(i=0;i<B.length;i++) { flag=GetElem(B,i,&e);//依次把B中每个元素取出给 if(flag==1) { pos=LocateElem(*A,e);//在A中查找和B中取出的元素e相等的元素 if(pos>0) DeleteList(A,pos,&e);//如果找到该元素,将其从A中删除 } } }
void union_func(SqList *La, SqList Lb) { int La_length, Lb_length, i; ElemType e; La_length = ListLength(*La); Lb_length = ListLength(Lb); for( i=1; i <= Lb_length; i++) { GetElem(Lb, i, &e); if( !LocateElem(*La, e) ) { ListInsert(La, ++La_length, e); } } }
void unionL(sqList *La,sqList Lb) { int La_len,Lb_len,i; ElemType e; La_len =ListLength(*La); Lb_len =ListLength(Lb); for (i=1; i< Lb_len;i++) { GetElem(Lb,i,&e); if(!LocateElem(*La,e)) { ListInsert(La,++La_len,e); } } }
void Union1(Sqlist &La, Sqlist &Lb) { ElemType e; int i; int la_len, lb_len; la_len = ListLength(La); lb_len = ListLength(Lb); for ( i = 1; i <= lb_len; i++ ) { GetElem(Lb, i, e); printf("e = %d\n", e); if ( !LocateElem(La, e, equal) ) ListInsert_before(La, ++la_len, e); } }
static Status NextElem(SLinkList L,ElemType cur_e,ElemType &next_e) { // 初始条件:线性表L已存在 // 操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继, // 否则操作失败,next_e无定义 int j,i=LocateElem(L,cur_e); // 在L中查找第一个值为cur_e的元素的位置 if(i) // L中存在元素cur_e { j=L[i].cur; // cur_e的后继的位置 if(j) // cur_e有后继 { next_e=L[j].data; return OK; // cur_e元素有后继 } } return ERROR; // L不存在cur_e元素,cur_e元素无后继 }
void DelElem(SeqList *A, SeqList B) { int i,flag,pos; DataType e; for(i=0;i<=B.length;i++) { flag = GetElem(B,i,&e); if(flag == 1) { pos = LocateElem(*A,e); if(pos > 0) { DeleteList(A,pos,&e); } } } }
Status NextElem(SLinkList L,int n,ElemType cur_e,ElemType &next_e) { // 初始条件:在L中表头位序为n的静态单链表已存在 // 操作结果:若cur_e是此单链表的数据元素,且不是最后一个, // 则用next_e返回它的后继,否则操作失败,next_e无定义 int i; i=LocateElem(L,n,cur_e); // 在链表中查找第一个值为cur_e的元素的位置 if(i) // 在静态单链表中存在元素cur_e { i=L[i].cur; // cur_e的后继的位置 if(i) // cur_e有后继 { next_e=L[i].data; return OK; // cur_e元素有后继 } } return ERROR; // L不存在cur_e元素,cur_e元素无后继 }
int main(int argc, const char * argv[]) { LinkList list, *L; Node *t; L = &list; InitList(L); ListInsert(L, 1, 12); ListInsert(L, 2, 13); ListInsert(L, 1, 14); ListInsert(L, 1, 15); ListInsert(L, 1, 16); ListInsert(L, 3, 17); t = LocateElem(L, 14); printf("%d \n", t->data); VisitList(L); DestroyList(L); return 0; }
#include "sqlist.cpp" /*假设线性表以顺序表表示*/ void main() { SqList *L; ElemType e; InitList(L); ListInsert(L,1,'a'); ListInsert(L,2,'c'); ListInsert(L,3,'a'); ListInsert(L,4,'d'); ListInsert(L,5,'b'); printf("ListLength(L)=%d\n",ListLength(L)); printf("ListEmpty(L)=%d\n",ListEmpty(L)); GetElem(L,3,e); printf("e=%c\n",e); printf("LocateElem(L,'a')=%d\n",LocateElem(L,'a')); ListInsert(L,4,'e'); DispList(L); ListDelete(L,3,e); DispList(L); DestroyList(L); }
void main() { LinkList L; ElemType e; int j; Status i; InitList(L); i = ListEmpty(L); printf("L是否空 i = %d (1:空 0:否)\n", i); ListInsert(L, 1, 3); ListInsert(L, 2, 5); i = GetElem(L, 1, e); j = ListLength(L); printf("L中的数据元素个数=%d, 第一个数据元素的值为%d.\n", j, e); printf("L中的数据元素依次为:"); ListTraverse(L, print); PriorElem(L, 5, e); printf("5前面的元素的值为%d.\n", e); NextElem(L, 3, e); printf("3后面的元素的值为%d.\n", e); printf("L是否空 %d(1:空 0:否)\n", ListEmpty(L)); j = LocateElem(L, 5, equal); if ( j ) printf("L的第%d个元素为5.\n", j); else printf("不存在值为5的元素.\n"); i = ListDelete(L, 2, e); printf("删除L的第2个元素:\n"); if ( i ) { printf("删除的元素值为%d, 现在L中的数据元素依次为", e); ListTraverse(L, print); } else printf("删除不成功!\n"); ClearList(L); printf("清空L后, L是否空:%d (1:空 0:否)\n", ListEmpty(L)); DestroyList(L); }
int main() { int i; SqList L; ElemType e = 10; InitList(&L); printf("ListEmpty = %d \n",ListEmpty(L)); printf("ListInsert 0 10 : %d\n",ListInsert(&L,0,e)); printf("ListEmpty = %d \n",ListEmpty(L)); printf("ListInsert 5 3 : %d\n",ListInsert(&L,5,3)); printf("ListLength = %d \n",ListLength(L)); for(i=0;i<10;i++) { ListInsert(&L,i,i); } printf("LocateElem 3 = %d",LocateElem(L,5)); }
int main() { LinkList L; ElemType e; Status i; int j,k; i=InitList(&L); printf("初始化L后:ListLength(L)=%d\n",ListLength(L)); for(j=1;j<=5;j++) i=ListInsert(&L,1,j); printf("在L的表头依次插入1~5后:L.data="); ListTraverse(L); printf("ListLength(L)=%d \n",ListLength(L)); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n",i); i=ClearList(&L); printf("清空L后:ListLength(L)=%d\n",ListLength(L)); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n",i); for(j=1;j<=10;j++) ListInsert(&L,j,j); printf("在L的表尾依次插入1~10后:L.data="); ListTraverse(L); printf("ListLength(L)=%d \n",ListLength(L)); ListInsert(&L,1,0); printf("在L的表头插入0后:L.data="); ListTraverse(L); printf("ListLength(L)=%d \n",ListLength(L)); GetElem(L,5,&e); printf("第5个元素的值为:%d\n",e); for(j=3;j<=4;j++) { k=LocateElem(L,j); if(k) printf("第%d个元素的值为%d\n",k,j); else printf("没有值为%d的元素\n",j); } k=ListLength(L); /* k为表长 */ for(j=k+1;j>=k;j--) { i=ListDelete(&L,j,&e); /* 删除第j个数据 */ if(i==ERROR) printf("删除第%d个数据失败\n",j); else printf("删除第%d个的元素值为:%d\n",j,e); } printf("依次输出L的元素:"); ListTraverse(L); j=5; ListDelete(&L,j,&e); /* 删除第5个数据 */ printf("删除第%d个的元素值为:%d\n",j,e); printf("依次输出L的元素:"); ListTraverse(L); i=ClearList(&L); printf("\n清空L后:ListLength(L)=%d\n",ListLength(L)); CreateListHead(&L,20); printf("整体创建L的元素(头插法):"); ListTraverse(L); i=ClearList(&L); printf("\n删除L后:ListLength(L)=%d\n",ListLength(L)); CreateListTail(&L,20); printf("整体创建L的元素(尾插法):"); ListTraverse(L); return 0; }
void main() /* 除了几个输出语句外,主程和main2-1.c很像 */ { LinkList L; /* 与main2-1.c不同 */ ElemType e,e0; Status i; int j,k; i=InitList(&L); for(j=1;j<=5;j++) i=ListInsert(L,1,j); printf("在L的表头依次插入1~5后:L="); ListTraverse(L,visit); /* 依次对元素调用visit(),输出元素的值 */ i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n",i); i=ClearList(L); printf("清空L后:L="); ListTraverse(L,visit); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n",i); for(j=1;j<=10;j++) ListInsert(L,j,j); printf("在L的表尾依次插入1~10后:L="); ListTraverse(L,visit); GetElem(L,5,&e); printf("第5个元素的值为:%d\n",e); for(j=0;j<=1;j++) { k=LocateElem(L,j,comp); if(k) printf("第%d个元素的值为%d\n",k,j); else printf("没有值为%d的元素\n",j); } for(j=1;j<=2;j++) /* 测试头两个数据 */ { GetElem(L,j,&e0); /* 把第j个数据赋给e0 */ i=PriorElem(L,e0,&e); /* 求e0的前驱 */ if(i==INFEASIBLE) printf("元素%d无前驱\n",e0); else printf("元素%d的前驱为:%d\n",e0,e); } for(j=ListLength(L)-1;j<=ListLength(L);j++)/*最后两个数据 */ { GetElem(L,j,&e0); /* 把第j个数据赋给e0 */ i=NextElem(L,e0,&e); /* 求e0的后继 */ if(i==INFEASIBLE) printf("元素%d无后继\n",e0); else printf("元素%d的后继为:%d\n",e0,e); } k=ListLength(L); /* k为表长 */ for(j=k+1;j>=k;j--) { i=ListDelete(L,j,&e); /* 删除第j个数据 */ if(i==ERROR) printf("删除第%d个数据失败\n",j); else printf("删除的元素为:%d\n",e); } printf("依次输出L的元素:"); ListTraverse(L,visit); DestroyList(&L); printf("销毁L后:L=%u\n",L); }
int main() { SqList L; SqList Lb; ElemType e; Status i; int j,k; i=InitList(&L); printf("初始化L后:L.length=%d\n",L.length); for(j=1;j<=5;j++) i=ListInsert(&L,1,j); printf("在L的表头依次插入1~5后:L.data="); ListTraverse(L); printf("L.length=%d \n",L.length); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n",i); i=ClearList(&L); printf("清空L后:L.length=%d\n",L.length); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n",i); for(j=1;j<=10;j++) ListInsert(&L,j,j); printf("在L的表尾依次插入1~10后:L.data="); ListTraverse(L); printf("L.length=%d \n",L.length); ListInsert(&L,1,0); printf("在L的表头插入0后:L.data="); ListTraverse(L); printf("L.length=%d \n",L.length); GetElem(L,5,&e); printf("第5个元素的值为:%d\n",e); for(j=3;j<=4;j++) { k=LocateElem(L,j); if(k) printf("第%d个元素的值为%d\n",k,j); else printf("没有值为%d的元素\n",j); } k=ListLength(L); /* k为表长 */ for(j=k+1;j>=k;j--) { i=ListDelete(&L,j,&e); /* 删除第j个数据 */ if(i==ERROR) printf("删除第%d个数据失败\n",j); else printf("删除第%d个的元素值为:%d\n",j,e); } printf("依次输出L的元素:"); ListTraverse(L); j=5; ListDelete(&L,j,&e); /* 删除第5个数据 */ printf("删除第%d个的元素值为:%d\n",j,e); printf("依次输出L的元素:"); ListTraverse(L); //构造一个有10个数的Lb i=InitList(&Lb); for(j=6;j<=15;j++) i=ListInsert(&Lb,1,j); unionL(&L,Lb); printf("依次输出合并了Lb的L的元素:"); ListTraverse(L); return 0; }
void main() { SqList L; ElemType e, e0; Status i; int j, k; i = InitList(&L); printf("初始化L后:L.elem=%u L.length=%d L.listsize=%d\n", L.elem, L.length, L.listsize); for (j = 1; j <= 5; j++) i = ListInsert(&L, 1, j); printf("在L的表头依次插入1~5后:*L.elem="); for (j = 1; j <= 5; j++) printf("%d ", *(L.elem + j - 1)); printf("\n"); printf("L.elem=%u L.length=%d L.listsize=%d\n", L.elem, L.length, L.listsize); i = ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n", i); i = ClearList(&L); printf("清空L后:L.elem=%u L.length=%d L.listsize=%d\n", L.elem, L.length, L.listsize); i = ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)\n", i); for (j = 1; j <= 10; j++) ListInsert(&L, j, j); printf("在L的表尾依次插入1~10后:*L.elem="); for (j = 1; j <= 10; j++) printf("%d ", *(L.elem + j - 1)); printf("\n"); printf("L.elem=%u L.length=%d L.listsize=%d\n", L.elem, L.length, L.listsize); ListInsert(&L, 1, 0); printf("在L的表头插入0后:*L.elem="); for (j = 1; j <= ListLength(L); j++) /* ListLength(L)为元素个数 */ printf("%d ", *(L.elem + j - 1)); printf("\n"); printf("L.elem=%u(有可能改变) L.length=%d(改变) L.listsize=%d(改变)\n", L.elem, L.length, L.listsize); GetElem(L, 5, &e); printf("第5个元素的值为:%d\n", e); for (j = 3; j <= 4; j++) { k = LocateElem(L, j, comp); if (k) printf("第%d个元素的值为%d的平方\n", k, j); else printf("没有值为%d的平方的元素\n", j); } for (j = 1; j <= 2; j++) /* 测试头两个数据 */ { GetElem(L, j, &e0); /* 把第j个数据赋给e0 */ i = PriorElem(L, e0, &e); /* 求e0的前驱 */ if (i == INFEASIBLE) printf("元素%d无前驱\n", e0); else printf("元素%d的前驱为:%d\n", e0, e); } for (j = ListLength(L) - 1; j <= ListLength(L); j++) /* 最后两个数据 */ { GetElem(L, j, &e0); /* 把第j个数据赋给e0 */ i = NextElem(L, e0, &e); /* 求e0的后继 */ if (i == INFEASIBLE) printf("元素%d无后继\n", e0); else printf("元素%d的后继为:%d\n", e0, e); } k = ListLength(L); /* k为表长 */ for (j = k + 1; j >= k; j--) { i = ListDelete(&L, j, &e); /* 删除第j个数据 */ if (i == ERROR) printf("删除第%d个数据失败\n", j); else printf("删除的元素值为:%d\n", e); } printf("依次输出L的元素:"); ListTraverse(L, visit); /* 依次对元素调用visit(),输出元素的值 */ printf("L的元素值加倍后:"); ListTraverse(L, dbl); /* 依次对元素调用dbl(),元素值乘2 */ ListTraverse(L, visit); DestroyList(&L); printf("销毁L后:L.elem=%u L.length=%d L.listsize=%d\n", L.elem, L.length, L.listsize); }
int main() { SqlList L, Lb; ElemType e; Status i; int j, k; i = InitList(&L); printf("After init L L.length=%d \n", L.length); for (j = 1; j <= 5; j++) { i = ListInsert(&L, 1, j); } printf("After insert 1~5 in head of list L.data="); ListTraverse(L); printf("L.length=%d \n", L.length); i = ListEmpty(L); printf("Is L empty i=%d (1 is yes 0 is no) \n", i); i = ClearList(&L); printf("After clear L L.length=%d \n", L.length); i = ListEmpty(L); printf("Is L empty i=%d (1 is yes 0 is no) \n", i); for(j = 1; j <= 10; j++) { ListInsert(&L, j, j); } printf("After insert 1~10 in the end of list: L.data="); ListTraverse(L); printf("L.length = %d \n", L.length); ListInsert(&L, 1, 0); printf("After insert 0 in the head of L: L.data="); ListTraverse(L); printf("L.length = %d \n", L.length); GetElem(L, 5, &e); printf("The five element is: %d \n", e); for(j = 3; j <= 12; j++) { k = LocateElem(L, j); if (k) printf("The %d element value is %d \n", k, j); else printf("Not found %d element\n", j); } k = ListLength(L); for(j = k+1; j>= k; j--) { i = ListDelete(&L, j, &e); if (i == ERROR) printf("Delete the %d element failed \n", j); else printf("Delete the %d element is %d \n", j, e); } printf("Print all element of L \n"); ListTraverse(L); j = 5; ListDelete(&L, j, &e); printf("Delete the %d element is %d \n", j, e); printf("Print all element of L \n"); ListTraverse(L); i = InitList(&Lb); for(j = 6; j <=15; j++) { i = ListInsert(&Lb, 1, j); } unionl(&L, Lb); printf("Print all element of L \n"); ListTraverse(L); return 0; }
void main() { int j,k; Status i; ElemType e,e0; SLinkList L; InitList(L); for(j=1;j<=5;j++) i=ListInsert(L,1,j); printf("在L的表头依次插入1~5后:L="); ListTraverse(L,visit); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)表L的长度=%d\n",i,ListLength(L)); i=ClearList(L); printf("清空L后:L="); ListTraverse(L,visit); i=ListEmpty(L); printf("L是否空:i=%d(1:是 0:否)表L的长度=%d\n",i,ListLength(L)); for(j=1;j<=10;j++) ListInsert(L,j,j); printf("在L的表尾依次插入1~10后:L="); ListTraverse(L,visit); GetElem(L,5,&e); printf("第5个元素的值为:%d\n",e); for(j=0;j<=1;j++) { k=LocateElem(L,j); if(k) printf("值为%d的元素在静态链表中的位序为%d\n",j,k); else printf("没有值为%d的元素\n",j); } for(j=1;j<=2;j++) /* 测试头两个数据 */ { GetElem(L,j,&e0); /* 把第j个数据赋给e0 */ i=PriorElem(L,e0,&e); /* 求e0的前驱 */ if(!i) printf("元素%d无前驱\n",e0); else printf("元素%d的前驱为:%d\n",e0,e); } for(j=ListLength(L)-1;j<=ListLength(L);j++) /* 最后两个数据 */ { GetElem(L,j,&e0); /* 把第j个数据赋给e0 */ i=NextElem(L,e0,&e); /* 求e0的后继 */ if(!i) printf("元素%d无后继\n",e0); else printf("元素%d的后继为:%d\n",e0,e); } k=ListLength(L); /* k为表长 */ for(j=k+1;j>=k;j--) { i=ListDelete(L,j,&e); /* 删除第j个数据 */ if(i) printf("删除的元素为:%d\n",e); else printf("删除第%d个数据失败\n",j); } printf("依次输出L的元素:"); ListTraverse(L,visit); /* 依次对元素调用visit(),输出元素的值 */ }