将两个递增链表合并成一个递减的链表

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include"stdio.h"

#include"stdlib.h"

struct Node

{int date;

struct Node *next;

}Node;

goujian(struct Node *L)

{

struct Node *s,*p;

int e;p=L;

printf("输入数据:");

scanf("%d",&e);

while(e!=-999)

{s=(struct Node *)malloc(sizeof(struct Node)); s->date=e;

s->next=p->next;

p->next=s;

scanf("%d",&e);

p=s;}

}

outline(struct Node *L)

{struct Node *p;

p=L->next;

printf("输出数据:");

while(p!=NULL)

{printf("%d ",p->date);

p=p->next;

}

}

hebing(struct Node *h1,struct Node *h2)

{struct Node *q,*p,*r,*s;

p=h1->next;

q=h2->next;

r=h1;

r->next=NULL;

while(p!=NULL&&q!=NULL)

{if(p->date<=q->date)

{ s=p;

p=p->next;

s->next=r->next;

r->next=s;

}

else

{

s=q;

q=q->next;

s->next=r->next;

r->next=s;

}

if(q==NULL)

{while(p!=NULL)

{s=p;

p=p->next;

s->next=r->next;

r->next=s;}

}

if(p==NULL)

{while(q!=NULL)

{ s=q;

q=q->next;

s->next=r->next;

r->next=s;}

}

}

free(h2);

}

void main()

{struct Node *h1,*h2;

h1=(struct Node *)malloc(sizeof(struct Node));

h2=(struct Node *)malloc(sizeof(struct Node));

h1->next=NULL;

h2->next=NULL;

goujian(h1);

goujian(h2);

hebing(h1,h2);

outline(h1);

}

相关文档
最新文档