常见C语言面试题之十:有序表合并

 
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "stdlib.h"
  4. #include "malloc.h"
  5. typedef struct LNode
  6. {
  7.   int data;
  8.   LNode* next;
  9. }LNode, *LinkList;
  10. LinkList La, Lb, Lc;
  11. LNode* Create()
  12. {
  13.   LinkList l, p, q;
  14.   int x;
  15.   l=NULL;
  16.   l=(LNode*)malloc(sizeof(LNode));
  17.   if(l==NULL) exit(-1);  
  18.   l->next = NULL;  
  19.   scanf("%d", &x);
  20.   while(x!=9999)
  21.   {
  22.     p=(LNode*)malloc(sizeof(LNode));
  23.     p->data = x;
  24.     if((l->next)==NULL)
  25.     {
  26.       l->next = p;
  27.       q=p;
  28.     }
  29.     else
  30.     {
  31.       q->next = p;
  32.       q=p;
  33.     }
  34.     scanf("%d",&x);
  35.   }
  36.   p->next = NULL;
  37.   return (l);  
  38. }
  39. void print_LinkList(LinkList l)
  40. {
  41.   LinkList p;
  42.   p=l;
  43.   printf("---");
  44.   while(p->next!=NULL)
  45.   {
  46.     p = p->next;
  47.     printf("%5d",p->data);
  48.   }
  49.   printf("/n/n");
  50. }
  51. LinkList MergeList(LinkList La, LinkList Lb)
  52. {
  53.   LinkList pa, pb, pc;
  54.   pa = La->next;
  55.   pb = Lb->next;
  56.   Lc = pc = La;
  57.   while(pa && pb)
  58.   {
  59.     if(pa->data<=pb->data)
  60.     {
  61.       pc->next = pa;
  62.       pc = pa;
  63.       pa = pa->next;
  64.     }
  65.     else
  66.     {
  67.       pc->next = pb;
  68.       pc=pb;
  69.       pb = pb->next;
  70.     }    
  71.   }
  72.   pc->next = pa?pa:pb;
  73.   free(Lb);
  74.   return(Lc);
  75. }
  76. int _tmain(int argc, _TCHAR* argv[])
  77. {
  78.     La = Create();
  79.   Lb = Create();
  80.   MergeList(La,Lb);
  81.   print_LinkList(Lc);
  82.   return 0;
  83. }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值