已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。
输出格式:
在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL
。
输入样例:
1 2 5 -1
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;
}