链式合并(尾插入,前提是输入2个从小到大的链表)

来源:互联网 发布:德州淘宝招聘信息 编辑:程序博客网 时间:2024/06/03 16:59
#include <stdio.h>  #include <stdlib.h>  #define LIST_INIT_SIZE 100  #define LISTINCREMENT 10  #define ok 1  #define overflow -2    typedef struct LNode  {      int data;      struct LNode *next;       }LNode,*LinkList;  LNode *create_LinkList(void)  {      int data;      LNode *head,*p,*q;      head=p=(LNode *)malloc(sizeof(LNode));      p->next=NULL;      while(1)      {          scanf("%d",&data);          if(data==0)              break;          q=(LNode *)malloc(sizeof(LNode));          q->data=data;          q->next=p->next;          p->next=q;          p=q;      }      return(head);  }  void PrintLinkList(LNode *head)  {      LNode *p;      p=head->next;      if(p!=NULL)          do          {              printf("%d",p->data);              p=p->next;          }          while(p!=NULL);  }    LinkList MergeList_L(LinkList &la,LinkList &lb,LinkList &lc){LinkList pa,pb,pc;pa=la->next;    pb=lb->next;lc=pc=la;while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else {pc->next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;free(lb);return lc;}void main()  {      LinkList la,lb,lc;          la=create_LinkList();      lb=create_LinkList(); MergeList_L(la,lb,lc);    PrintLinkList(lc);}
这些合并都是需要认为的输入2个递增的链表,如果没有,就用冒泡什么的再排序。头插入和尾插入不一样的!
0 0
原创粉丝点击