有序链表的合并(完整算法)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

有序链表的合并(完整算法)将两个递增的有序链表合并成一个递增的有序链表,要求结果仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据#includeiostream.htypedefstructLNode{intdata;structLNode*next;}LNode,*LinkList;voidCreateList(LinkList&L,intn){LinkListpa=L;inti;for(i=0;in;i++){LinkLists=newLNode;coutenteradata:endl;cins-data;s-next=NULL;pa-next=s;pa=pa-next;}}voidPurify(LinkList&L){LinkListp=L-next;LinkListq=p-next;LinkLists=p;while(p&&q){while(q){if(p-data==q-data){LinkListt=q;q=q-next;s-next=q;deletet;}else{s=q;q=q-next;}}p=p-next;q=p-next;s=p;}}voidMergeList(LinkList&LA,LinkList&LB){LinkListpa=LA-next;LinkListpb=LB-next;LinkListq=NULL;while(pb){while(pa){if(pa-data==pb-data){pb=pb-next;break;}pa=pa-next;}if(pa==NULL){q=pb;pb=pb-next;q-next=LA-next;LA-next=q;}pa=LA-next;}}voidBubbleSort(LinkList&L){LinkListp=L-next;LinkLists=p-next;LinkListt=s;intq;intflag=0;intn=0;while(t){if(p-datas-data){q=p-data;p-data=s-data;s-data=q;flag++;}p=p-next;s=s-next;t=t-next;n++;}if(flag==0)return;elseflag=0;for(n--;n0;n--){p=L-next;s=p-next;for(inti=0;in;i++){if(p-datas-data){q=p-data;p-data=s-data;s-data=q;flag++;}p=p-next;s=s-next;}if(flag==0)return;elseflag=0;}}voidprint(LinkList&LA){LinkListp=LA-next;coutthefinaldatais:endl;while(p){coutp-data;p=p-next;}}voidmain(){LinkListLA=newLNode;LinkListLB=newLNode;LA-next=NULL;LB-next=NULL;intLA_n,LB_n;coutpleaseenterLA_n,LB_n:;cinLA_nLB_n;cout----LA----endl;CreateList(LA,LA_n);cout----LB----endl;CreateList(LB,LB_n);Purify(LA);Purify(LB);MergeList(LA,LB);BubbleSort(LA);print(LA);}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功