1、单链表#include#includetypedef struct LNode int data3; struct LNode *next;LNode,*LinkList;int flag1=1,flag2=1,flag3=0;void welcome();void CreateList(LinkList &L);void Search(LinkList LA,LinkList LB);int Search_L(LinkList L,int Flag);void Delete(LinkList &LA,LinkList &LB);int Delete_L(LinkList &L,int Fla
2、g);void Insert(LinkList &LA,LinkList &LB);int Insert_L(LinkList &L,int Flag);void Destroy(LinkList &LA,LinkList &LB);void Destroy_L(LinkList &L,int &Flag);void Merge(LinkList LA,LinkList LB,LinkList &LC);void Output(LinkList LA,LinkList LB,LinkList LC);int Output_L(LinkList L,int Flag);void main() i
3、nt a=1; LinkList LA,LB,LC; welcome(); printf(请在单链表LA中输入数据,按0键结束(0不作为单链表中数据)n); CreateList(LA); printf(nn请在单链表LB中输入数据,按0键结束(0不作为单链表中数据)n); CreateList(LB); system(cls); while(a) printf(nnn); printf(tttt 主 菜 单nn); printf(tt -nn); printf(ttt 1查 找 单 链 表 中 的 元 素nn); printf(ttt 2删 除 单 链 表 中 的 元 素nn); print
4、f(ttt 3在 单 链 表 中 插 入 元 素nn); printf(ttt 4销 毁 单 链 表nn); printf(ttt 5创 建 新 的 单 链 表nn); printf(ttt 6合 并 单 链 表nn); printf(ttt 7输 出 单 链 表nn); printf(ttt 0退 出nn); scanf(%d,&a); switch(a) case 1: system(cls); Search(LA,LB); break; case 2: system(cls); Delete(LA,LB); break; case 3: system(cls); Insert(LA,LB
5、); break; case 4: system(cls); Destroy(LA,LB); break; case 5: system(cls); if(flag1=0) printf(请在单链表LA中输入数据,按0键结束(0不作为单链表中数据)n); CreateList(LA); flag1=1; else if(flag2=0) printf(请在单链表LB中输入数据,按0键结束(0不作为单链表中数据)n); CreateList(LB); flag2=1; else printf(销毁LA或LB后才能创建新的单链表); getchar(); system(cls); break; c
6、ase 6: system(cls); Merge(LA,LB,LC); break; case 7: system(cls); Output(LA,LB,LC); break; case 0: system(cls); Destroy_L(LA,flag1); Destroy_L(LB,flag2); printf(nnnnnnnntttt 谢谢使用nnnnnnnnnnnn); break; void welcome() printf(nnnnnnnnntttt欢迎使用); printf(nnnnnnnnnnnnnn按Enter键); getchar(); system(cls);void
7、CreateList(LinkList &L) LinkList p,q; L=(LinkList)malloc(sizeof(LNode); L-data0=0; L-next=NULL; q=L; while(1) p=(LinkList)malloc(sizeof(LNode); scanf(%d,&p-data0); if(p-data0=0) break; p-data2=p-data1=p-data0; q-next=p; q=p; L-data0+; q-next=NULL;void Search(LinkList LA,LinkList LB) int a=1; while(a
8、) printf(nnn); printf(tttt 主 菜 单nn); printf(tt -nn); printf(ttt 1查 找 单 链 表 LA 中 的 元 素nn); printf(ttt 2查 找 单 链 表 LB 中 的 元 素nn); printf(ttt 0退 出nn); scanf(%d,&a); switch(a) case 1: system(cls); Search_L(LA,flag1); break; case 2: system(cls); Search_L(LB,flag2); break; case 0: system(cls); break; int S
9、earch_L(LinkList L,int Flag) int a,i; LinkList p; if(Flag=0) printf(此单链表已被销毁); return 0; p=L-next; printf(请输入要查找元素的位置(1%d):,L-data0); scanf(%d,&a); for(i=1;inext; printf(nn此单链表中第%d个元素为:%d,a,p-data0); printf(nnnnnnnnnnnnnn按Enter键); getchar();getchar(); system(cls); return 1;void Delete(LinkList &LA,L
10、inkList &LB) int a=1; while(a) printf(nnn); printf(tttt 主 菜 单nn); printf(tt -nn); printf(ttt 1删 除 单 链 表 LA 中 的 元 素nn); printf(ttt 2删 除 单 链 表 LB 中 的 元 素nn); printf(ttt 0退 出nn); scanf(%d,&a); switch(a) case 1: system(cls); Delete_L(LA,flag1); break; case 2: system(cls); Delete_L(LB,flag2); break; case
11、 0: system(cls); break; int Delete_L(LinkList &L,int Flag) int a,i=0; LinkList p=L,q; if(Flag=0) printf(此单链表已被销毁); return 0; printf(请输入要删除元素的位置(1%d):,L-data0); scanf(%d,&a); while(p-next&inext; i+; if(!(p-next)|ia-1) return 0; q=p-next; p-next=q-next; printf(nnnn已将第%d个元素%d从单链表中,a,q-data0); free(q); printf(nnnnnnnn按Enter键); getchar();getchar(); system(cls); return 1;void Insert(LinkList &LA,LinkList &LB) int a=1; while(a) printf(nnn); printf(tttt 主 菜 单nn); printf(tt -nn); printf(ttt 1在 单 链 表 LA 中 插 入 元 素nn); printf(ttt 2在 单 链 表 LB 中 插 入 元 素nn); printf(ttt 0退 出nn); scanf(%d,&a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1