有两个序列表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 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100