有两个序列表A和B,A中存放1.3.5.7.9,B中存放2.4.6.8.10 要求将两个链表合成1-10。怎么以代码形式提现
2条回答 默认 最新
- threecat.up 2021-08-22 15:39关注
#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;
}
输入链表,即可合并本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于无人驾驶的航向角
- ¥15 keil的map文件中Image component sizes各项意思
- ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
- ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
- ¥15 划分vlan后,链路不通了?
- ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
- ¥15 Vue3 大型图片数据拖动排序
- ¥15 Centos / PETGEM
- ¥15 划分vlan后不通了
- ¥20 用雷电模拟器安装百达屋apk一直闪退