原题链接:[编程入门]链表合并
解题思路:
注意事项:
参考代码:
#include<bits/stdc++.h>
using namespace std;
typedef struct Node{
int n;
int g;
struct Node *next;
}node;
node*creat(int n){//创建带头结点的链表
node*head,*p,*s;
head=(node*)malloc(sizeof(node));
head->next=NULL;
p=head;
for(int i=1;i<=n;i++)
{
s=(node*)malloc(sizeof(node));
s->next=NULL;
cin>>s->n>>s->g;
p->next=s;
p=s;
}
return head;
}
node*hebing(node *h1,node*h2){//合并两个链表
node*p;
p=h1->next;
while(p->next!=NULL)
p=p->next;
p->next=h2->next;
return h1;
}
void ec(node*a,node*b){//交换两个节点的数据
int temp=a->g;
a->g=b->g;
b->g=temp;
int t=a->n;
a->n=b->n;
b->n=t;
}
node*sort(node*h,int n){//利用冒泡排序
node*p,*s;
for(int i=1;i<=n-1;i++){
p=h->next,s=p->next;
while(s!=NULL){
if(p->n>s->n)
ec(p,s);
p=s,s=s->next;
}
}
return h;
}
int main(){
int n,m;
node*H,*q,*y;
node*H1,*H2;
cin>>n>>m;
H1=creat(n);
H2=creat(m);
y=hebing(H1,H2);
H=sort(y,m+n);
q=H->next;
while(q!=NULL)
{
cout<<q->n<<" "<<q->g<<endl;
q=q->next;
}
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复