#include<stdio.h>
#include<stdlib.h>
typedef struct
{
int date;
}Date;
typedef struct LNode
{
Date elem;
struct LNode *next;
}LNode,*linklist;
int initlist(linklist &l)
{
l=(linklist)malloc(sizeof(LNode));
l=new LNode;
l->next=NULL;
return 1;
}
int createlist(linklist &l,int n)
{
linklist r;
r=l;
for(int i=0;i<n;i++)
{
linklist p=new LNode;
printf("请输入第%d个数字\n",i+1);
scanf("%d",&p->elem.date);
p->next=NULL;
r->next=p;
r=p;
}
}
int mergelist(linklist &la,linklist &lb,linklist &lc)
{
linklist pa=la->next;linklist pb=lb->next;linklist pc;linklist r;
lc=la;
pc=lc;
while(pa&&pb)
{
if(pa->elem.date < pb->elem.date)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else if (pa->elem.date==pb->elem.date)
{
pc->next=pa;
pc=pa;
pa=pa->next;
r=pb;
pb=pb->next;
delete r;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
delete lb;
}
int output(linklist &lc)
{
linklist pc=lc;
pc=lc->next;
while(pc)
{
printf("%2d",pc->elem.date);
pc=pc->next;
}
}
int main()
{
linklist la,lb,lc;
initlist(la);
initlist(lb);
int n1,n2;
printf("请输入每条链表的个数\n");
scanf("%d %d",&n1,&n2);
printf("请输入第一个链表的数据\n");
createlist(la,n1);
printf("请输入第二个链表的数据\n");
createlist(lb,n2);
mergelist(la,lb,lc);
output(lc);
}
数据结构(严蔚敏 第二版)第二章练习题2(1)
最新推荐文章于 2024-08-12 11:00:00 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)