A链表和B链表的合成操作

有两个序列表A和B,A中存放1.3.5.7.9,B中存放2.4.6.8.10 要求将两个链表合成1-10。怎么以代码形式提现

#include
#include<stdio.h>
#include<string.h>
#include
using namespace std;
typedef struct Lnode
{
int data;
Lnode *next;
} Lnode,*linklist;
void creat_back(linklist &a)
{
int n,tmp;
linklist p,q;
a=(linklist)malloc(sizeof(Lnode));
a->next=NULL;
p=a;
scanf("%d",&n);
for (int i=0; i<n; i++)
{
scanf("%d",&tmp);
q=(linklist)malloc(sizeof(Lnode));
q->data=tmp;
q->next=NULL;
p->next=q;
p=q;
}
}
void print(linklist a)
{
linklist p=a->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void merge_ab(linklist aa,linklist bb,linklist &c)
{
linklist a=aa->next,b=bb->next;
linklist p,q;
c=(linklist)malloc(sizeof(Lnode));
c->next=NULL;
p=c;
while(a!=NULL && b!=NULL)
{
printf("%d %d\n",a->data,b->data);
if (a->data < b->data)
{
q=(linklist)malloc(sizeof(Lnode));
q->data=a->data;
q->next=NULL;
p->next=q;
p=q;
a=a->next;
}
else
{
q=(linklist)malloc(sizeof(Lnode));
q->data=b->data;
q->next=NULL;
p->next=q;
p=q;
b=b->next;
}
}
while(a!=NULL)
{
q=(linklist)malloc(sizeof(Lnode));
q->data=a->data;
q->next=NULL;
p->next=q;
p=q;
a=a->next;
}
while(b!=NULL)
{
q=(linklist)malloc(sizeof(Lnode));
q->data=a->data;
q->next=NULL;
p->next=q;
p=q;
b=b->next;
}
}
int main()
{
linklist a,b,c;
creat_back(a);
print(a);
creat_back(b);
print(b);
merge_ab(a,b,c);
printf("zz");
print(c);
return 0;
}
输入链表,即可合并

创建一个新的链表头,读取A和B的头元素,比较大小后将较小的链入新链表,继续比较新的头元素,如果A或B中的一个链表用完,就将另一个链表剩下的部分链入新链表末尾即可
有帮助望采纳