7-2 两个有序链表序列的合并(c++)
7-2 两个有序链表序列的合并已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10
·
7-2 两个有序链表序列的合并
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。
输入样例:
1 3 5 -1
2 4 6 8 10 -1
输出样例:
1 2 3 4 5 6 8 10
样例解答:
#include <bits/stdc++.h>
using namespace std;
list<int> add(){
list<int> l;
int a;
while(1){
cin>>a;
if(a==-1) break;
l.push_back(a);
}
return l;
}
void put(list<int> s,list<int> &s3){
while(!s.empty()){
s3.push_back(s.front());
s.pop_front();
}
}
int main() {
list<int> s1 = add(),s2 = add(),s3;
while(!s1.empty()&&!s2.empty()){
if(s1.front()>s2.front()){
s3.push_back(s2.front());
s2.pop_front();
}else{
s3.push_back(s1.front());
s1.pop_front();
}
}
/*while(!s1.empty()){
s3.push_back(s1.front());
s1.pop_front();
}
while(!s2.empty()){
s3.push_back(s2.front());
s2.pop_front();
}*/
put(s1,s3);
put(s2,s3);
if(!s3.empty()){
cout<<s3.front();
s3.pop_front();
while(!s3.empty()){
cout<<" "<<s3.front();
s3.pop_front();
}
}else cout<<"NULL";
}
点击阅读全文
更多推荐
所有评论(0)