题目1519:合并两个排序的链表

来源:互联网 发布:杭州编程培训和盈 编辑:程序博客网 时间:2024/06/05 07:32
//题目1519:合并两个排序的链表#include <stdio.h>typedef  struct Node{int data;struct Node *next;         }Node,*LinkList;void Add(LinkList &list,int value){Node *node=new Node();node->next=NULL;node->data=value;    if(list==NULL)    {list=node;    }    else    {        LinkList p=list;        while((p->next)!=NULL)        {p=p->next;        }        p->next=node;    }}void Union(LinkList la,LinkList lb,LinkList &lc){     if(la==NULL)     {     lc=lb; return ; }     if(lb==NULL) { lc=la;    return ; }     Node *p;     if(la->data > lb->data) {     lc=p=lb;  lb=lb->next; }      else//(la->data < lb->data) {     lc=p=la;  la=la->next; }   while(la && lb)     {    if(la->data <= lb->data){   p->next=la;   la=la->next;}else{  p->next=lb;  lb=lb->next;}    p=p->next; } p->next=(la?la:lb);}void prit(LinkList &list){LinkList p=list;while(p->next!=NULL){        printf("%d ",p->data);        p=p->next;              }     printf("%d\n",p->data);//printf("\n");}int main(){    int n,m,x;        while(scanf("%d%d",&n,&m)!=EOF)    {if(n==0 && m==0) {printf("NULL\n");continue;}        LinkList first=NULL,second=NULL,lc=NULL;                while(n--)        {            scanf("%d",&x);            Add(first,x);        }     //  prit(first);                while(m--)        {            scanf("%d",&x);            Add(second,x);               }        //   prit(second);Union(first,second,lc);prit(lc);    }  return 0;}

原创粉丝点击