码迷,mamicode.com
首页 > 其他好文 > 详细

连个有序列表合并

时间:2019-10-10 00:03:41      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:思路   void   结束   合并链表   创建   NPU   存储空间   原来   重复   

问题描述:

将两个递增的有序链表合并为一个递增的的有序链表。要求结果链表仍然使用原来两个链表的存储空间,不另外占用其他的的存储空间。表中不允许有重复的数据。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 typedef struct Lnode
 5 {
 6     int data;
 7     struct Lnode *next;
 8 }Lnode,*LinkList;
9 void creatList(LinkList &L); 10 void traverse(LinkList L); 11 void mergeList(LinkList &La,LinkList &Lb);
12 int main() 13 { 14 LinkList La,Lb; 15 creatList(La); //创建链表La 16 creatList(Lb); //创建链表Lb 17 18 traverse(La); 19 traverse(Lb); 20 mergeList(La,Lb); //两个链表合并 21 22 traverse(La); 23 24 return 0; 25 } 26 27 void creatList(LinkList &L) //创建链表,前面提过,不再赘述 28 { 29 L = (LinkList)malloc(sizeof(Lnode)); 30 L->next = NULL; 31 32 LinkList ptail = L; 33 printf("input the length:\n"); 34 scanf("%d",&L->data); 35 36 for(int i=1;i<=L->data;i++) 37 { 38 LinkList pnew = (LinkList)malloc(sizeof(Lnode)); 39 printf("input the %d data:\n",i); 40 scanf("%d",&pnew->data); 41 42 ptail->next = pnew; 43 ptail = pnew; 44 45 ptail->next = NULL; 46 } 47 48 } 49 50 void traverse(LinkList L) //遍历链表,不再赘述 51 { 52 LinkList p = L; 53 while(p->next!=NULL) 54 { 55 printf("%d ",p->next->data); 56 p = p->next; 57 } 58 printf("\n"); 59 } 60 //合并链表,思路是声明一个指针pc指向La,然后对比La与Lb中值的大小,pc一直指向较小数值的指针,直到一个链表为空时结束,接着将pc指向余下的链表,最后释放Lb的头指针 61 void mergeList(LinkList &La,LinkList &Lb) //合并链表 62 { 63 LinkList Lc; 64 LinkList pa = La->next; 65 LinkList pb = Lb->next; 66 67 Lc = La; 68 LinkList pc = Lc; 69 70 while(pa&&pb) 71 { 72 if(pa->data<pb->data) 73 { 74 pc->next = pa; 75 pc = pa; 76 pa = pa->next; 77 }else if(pa->data = pb->data) 78 { 79 LinkList q = pb; 80 pc->next = pa; 81 pc = pa; 82 pa = pa->next; 83 pb = pb->next; 84 85 free(q); 86 87 }else 88 { 89 pc->next = pb; 90 pc = pb; 91 pb = pb->next; 92 } 93 } 94 95 pc->next = pa?pa:pb; //将余下的代码接到pc后 96 97 free(Lb); 98 }

 

连个有序列表合并

标签:思路   void   结束   合并链表   创建   NPU   存储空间   原来   重复   

原文地址:https://www.cnblogs.com/wwww2/p/11644932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!