-
题目描述:
-
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
(hint: 请务必使用链表。)
-
输入:
-
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为两个整数n和m(0<=n<=1000, 0<=m<=1000):n代表将要输入的第一个链表的元素的个数,m代表将要输入的第二个链表的元素的个数。
下面一行包括n个数t(1<=t<=1000000):代表链表一中的元素。接下来一行包含m个元素,s(1<=t<=1000000)。
-
输出:
-
对应每个测试案例,
若有结果,输出相应的链表。否则,输出NULL。
-
样例输入:
-
5 2 1 3 5 7 9 2 4 0 0
-
样例输出:
-
1 2 3 4 5 7 9
NULL
-
-
#include <iostream> #include <list> #include <cstdio> using namespace std; int main() { //freopen("input.txt","r",stdin); list<int> list_1; list<int> list_2; list<int> list_3; int m,n; while(cin>>n>>m&&(n>=0&&n<=1000)&&(m>=0&&m<=1000)) { if(n==0||m==0) { cout<<"NULL"<<endl; continue; } list_1.clear(); list_2.clear(); list_3.clear(); // list_3.resize(m+n); int temp; for(int i=0;i<n;i++) { cin>>temp; list_1.push_back(temp); } for(int i=0;i<m;i++) { cin>>temp; list_2.push_back(temp); } list<int>::iterator index1=list_1.begin(); list<int>::iterator index2=list_2.begin(); while(index1!=list_1.end()&&index2!=list_2.end()) { if(*index1<=*index2) { list_3.push_back(*index1); index1++; } else { list_3.push_back(*index2); index2++; } } while(index1!=list_1.end()) { list_3.push_back(*index1); index1++; } while(index2!=list_2.end()) { list_3.push_back(*index2); index2++; } list<int>::iterator index3=list_3.begin(); int list3Size=list_3.size(); for(int i=0;i<list3Size-1;i++) { cout<<*index3<<' '; index3++; } cout<<*index3<<endl;//最后一个数据后边不能有空格 否则 PE } return 0; } /************************************************************** Problem: 1519 User: fuestck Language: C++ Result: Accepted Time:430 ms Memory:1520 kb ****************************************************************/
-