题目描述
给定两个元素有序(从小到大)的链表,要求将两个链表合并成一个有序(从小到大)链表。
输入格式
第一行输入第一个链表的结点数 S1。
第二行输入 S1 个整数,两两之间用空格隔开。
第三行输入第二个链表的结点数 S2。
第四行输入 S2 个整数,两两之间用空格隔开。
输出格式
输出合并之后的链表结果,两两之间用空格隔开。
数据范围
1≤S1,S2≤100
样例
输入样例:
4
2 4 6 8
3
3 5 7
输出样例:
2 3 4 5 6 7 8
C++ 代码
#include<iostream>
using namespace std;
const int N=110;
int a[N],b[N],res[2*N];
int i,j,cnt;
int main()
{
int n,m;
cin>>n;
for(i=0;i<n;i++) cin>>a[i]; // 输入第一个链表
cin>>m;
for(i=0;i<m;i++) cin>>b[i]; // 输入第二个链表
i=0,j=0;
while(i<n && j<m) // i没走到链尾并且j没走到链尾
{
if(a[i]<=b[j]) res[cnt++]=a[i++];
else res[cnt++]=b[j++];
}
while(i<n) res[cnt++]=a[i++]; // 当i没走到链尾
while(j<m) res[cnt++]=b[j++]; // 当j没走到链尾
// 输出合并后的链表res
for(i=0;i<cnt;i++) cout<<res[i]<<' ';
cout<<endl;
return 0;
}