• 两个有序列表合并


    问题描述:

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

     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: "); 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: ",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(" "); 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 }
  • 相关阅读:
    各种各样的轮播图
    让你分分钟学会Javascript中的闭包
    [数据清洗]-混乱的邮编数据
    [数据分析工具] Pandas 功能介绍(二)
    [机器学习]-[数据预处理]-中心化 缩放 KNN(二)
    [机器学习]-[数据预处理]-中心化 缩放 KNN(一)
    [数据分析工具] Pandas 不可不知的功能(一)
    [总结]-2018 w1
    [数据清洗]-看上去一样的数字
    [数据清洗]- Pandas 清洗“脏”数据(三)
  • 原文地址:https://www.cnblogs.com/wwww2/p/11644932.html
Copyright © 2020-2023  润新知