早教吧 育儿知识 作业答案 考试题库 百科 知识分享

哪位高手能编一下这道程序,建立两个单项链表,按交替的顺序轮流从这链表中取其成员归并成为一个新的链表,如其中一个链表的成员取完,另一个链表的多余成员依次接到新链表的尾部

题目详情
哪位高手能编一下这道程序,建立两个单项链表,按交替的顺序轮流从这链表中取其成员归并成为一个新的链表,如其中一个链表的成员取完,另一个链表的多余成员依次接到新链表的尾部,并把指向新链表的指针作为函数值返回。例如,若两个链表成员分别是{1,4,6,8,30,45}和{5,10,15},则链接成的新链表是{1,5,4,10,6,15,8,30,45}。
▼优质解答
答案和解析
#include
#include
struct LNode
{
int data;
struct LNode * next;
};
typedef struct LNode * linklist;
linklist create(int n)//创建链表
{
linklist head;
int a;
LNode *s ,*p;
s=(LNode *)malloc(sizeof(LNode));//动态申请内存
if(s==NULL)//申请失败就返回
{
printf("error!\n");
return 0;
}
head=s;
s->next=NULL;
while(n)
{
p=(LNode *)malloc(sizeof(LNode));
if(p==NULL){printf("error!\n");break;}
scanf("%d",&a);
p->data=a;
s->next=p;
p->next=NULL;
s=p;
n--;
}
return head;
}
linklist combine(linklist h1,linklist h2)//交叉合并两个链表
{
LNode *p, *s, *t, *q, *temp;
q=h1->next;
p=h2->next;
free(h2);//释放多余的结点
while(q && p)
{
temp=p;//保存h2的最后一个断点,为多余成员接入做准备
//将h2的每次元素分别插在h1的元素后面
s=q->next;
t=p->next;
p->next=q->next;
q->next=p;
q=s;
p=t;
}
while(p)
{ temp->next=p;
break;
}
return h1;
}
void main(void)
{
LNode * h1,*h2;
int n;
printf("输入第一个链表的元素个数n:");
scanf("%d",&n);
printf("输入第一个链表的数据:");
h1=create(n);
printf("输入第二个链表的元素个数n:");
scanf("%d",&n);
printf("输入第二个链表的数据:");
h2=create(n);
linklist h=combine(h1,h2);
h=h->next;
while(h)//输出
{ printf("%d ",h->data);
h=h->next;
}
}
看了哪位高手能编一下这道程序,建立...的网友还看了以下:

数学六年级下册问题一个圆锥体钢呸,体积是7立方分米,把它从高的1/3处截取上面的小圆锥(小圆锥的高是  2020-03-30 …

120的人从一米高的地方跳下来(受力面积大约10*10cm),地面受多大力?120斤的人从一米高的  2020-04-27 …

勾股定理圆柱一个圆柱体A,B分别在圆柱同一条高的上下(也就是在同侧)从一根绳子沿圆柱表面绕圆柱两周  2020-06-10 …

跳蚤效应哲学原理(好的答案加分啊)“跳蚤效应”来源于一个有趣的实验:生物学家曾经将跳蚤随意向地上一  2020-07-03 …

课文第二段记叙作者少年时出入质铺和药铺的情形。试分析下面一段话是否可以去掉。“我从一倍高的柜台外送  2020-07-11 …

把体积是3立方米的圆锥从高的一半截取一个小圆锥把体积是3立方分米的圆锥从高的一半截取一个小圆锥,剩  2020-07-31 …

为保护环境,国家实施退耕还林工程,图中F,G两处相比,优先退耕还林的是G原因:F,G相比,G处等高线  2020-11-10 …

英语怎样才能上130我现在高一,从高一刚开始英语就110分左右(150分),现在还是110分.怎样能  2020-11-16 …

物理题高一从高处落下的铁链着地过程中与地面会发出响声,长7.8米的铁链的上端从高楼无初速度释放,测出  2020-11-20 …

有两个瓶子放在不同高度,用一个软管在瓶口插入,水会从高的一个流下来么好像不行的==  2021-01-14 …