Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1423754
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类: C/C++

2012-05-30 11:03:09




点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define LEN 5
  4. typedef struct Node{
  5.     int data;
  6.     struct Node * next;
  7. }pNode,*tNode;
  8. void Disp(tNode head)//显示链表
  9. {
  10.     tNode p;
  11.     static int i=1;
  12.     p=head->next;
  13.     printf("链表%d is:\n",i);
  14.     while(p!=NULL)
  15.     {
  16.         printf("%4d",p->data);
  17.         p=p->next;
  18.     }
  19.     i++;
  20.     printf("\n");
  21. }

  22. void Init_L(tNode &head)//构建链表
  23. {
  24.     tNode p,q;
  25.     int i,num;
  26.     printf("input the number:\n");
  27.     q=head;
  28.     for (i=0;i<LEN;i++)
  29.     {
  30.         p=(tNode)malloc(sizeof(pNode));
  31.         scanf("%d",&num);
  32.         p->data=num;
  33.         p->next=q->next;
  34.         q->next=p;
  35.         q=p;
  36.     }
  37. }

  38. void Merge_L(tNode L1,tNode L2 )//合并链表
  39. {
  40.     tNode pa,pb,pc,Lc;
  41.     pa=L1->next;pb=L2->next;Lc=pc=L1;
  42.     while(pa&&pb)
  43.     {
  44.         if(pa->data<=pb->data)
  45.         {
  46.             pc->next=pa;pc=pa;pa=pa->next;
  47.         }
  48.         else
  49.         {
  50.             pc->next=pb;pc=pb;pb=pb->next;
  51.         }
  52.     }
  53.     pc->next=pa?pa:pb;
  54.     free(L2);
  55.     Disp(Lc);
  56. }

  57. int main()
  58. {
  59.     tNode L1,L2;
  60.     L1=(tNode)malloc(sizeof(pNode));
  61.     L1->next=NULL;
  62.     L2=(tNode)malloc(sizeof(pNode));
  63.     L2->next=NULL;
  64.     Init_L(L1);
  65.     Init_L(L2);
  66.     Disp(L1);
  67.     Disp(L2);
  68.     Merge_L(L1,L2);
  69.     return 0;
  70. }


阅读(709) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~