已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL
。
输入样例:
1. 1 2 5 -1 2. 2 4 5 8 10 -1
结尾无空行
输出样例:
2 5
结尾无空行
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { int x; vector<int>a,b,c; while(cin>>x&&x!=-1) a.push_back(x); while(cin>>x&&x!=-1) b.push_back(x); int i=0,j=0;//初始位置 while(i<a.size()&&j<b.size()) { if(a[i]>b[j]) j++;//b往后挪一个位置 else if(a[i]<b[j]) i++;//a往后挪一个位置 else//相等 { c.push_back(a[i]); i++,j++;//分别向后挪一个位置 } } int k=0; for(k=0;k<c.size();k++)//遍历 { if(k) cout<<' '; cout<<c[k]; } if(!k) cout<<"NULL";//新链表为空 return 0; }