5-51 兩個有序連結串列序列的合併(20分)
阿新 • • 發佈:2019-02-19
已知兩個非降序連結串列序列S1與S2,設計函式構造出S1與S2的並集新非降序連結串列S3。
輸入格式:
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用-1−1表示序列的結尾(-1−1不屬於這個序列)。數字用空格間隔。
輸出格式:
在一行中輸出合併後新的非降序連結串列,數字間用空格分開,結尾不能有多餘空格;若新連結串列為空,輸出NULL
。
輸入樣例:
1 3 5 -1
2 4 6 8 10 -1
輸出樣例:
1 2 3 4 5 6 8 10
#include<iostream> #include<vector> using namespace std; int main(){ vector<int> v1,v2; vector<int> :: iterator p1,p2; int x; int flag=0; while(1){ //讀入v1 cin>>x; if(x!=-1) v1.push_back(x); else break; } while(1){ //讀入v2 cin>>x; if(x!=-1) v2.push_back(x); else break; } for(p1=v1.begin(),p2=v2.begin();p1!=v1.end()&&p2!=v2.end();){ if(*p1<*p2){ cout<<*p1<<" "; p1++;} else { cout<<*p2<<" "; p2++;} } while(p1!=v1.end()){ if(flag)cout<<" "; else flag=1; cout<<*p1; p1++; } while(p2!=v2.end()){ if(flag)cout<<" "; else flag=1; cout<<*p2; p2++; } if(v1.size()==0&&v2.size()==0) //判斷是否為空 cout<<"NULL"; cout<<endl; return 0; }