已知两个单链表 LA 和 LB 分别表示两个集合,其元素递增排序,设计算法求出 LA 和 LB 的交集 C ,要求 C 同样以元素递增的单链表形式存储。
测试用例1
11 22 33 44 55↵
22 33 44 66 77 88↵
期待输出1
22 33 44 ↵
#include <iostream>
#include <list>
#include <sstream>
#include <string>
using namespace std;
list<int> CreateList(void);
int main()
{
list<int> la = CreateList();
list<int> lb = CreateList();
list<int> lc;
list<int>::iterator ita = la.begin();
list<int>::iterator itb = lb.begin();
int tmpa = *ita;
int tmpb = *itb;
while (ita != la.end() && itb != lb.end())
{
if (ita != la.end())
{
tmpa = *ita;
}
if (itb != lb.end())
{
tmpb = *itb;
}
if (tmpa == tmpb)
{
ita++;
itb++;
lc.push_back(tmpa);
continue;
}
if (tmpa > tmpb)
{
itb++;
continue;
}
if (tmpa < tmpb)
{
ita++;
continue;
}
}
int flag = false;
for (list<int>::iterator it = lc.begin(); it != lc.end(); it++)
{
if (!flag)
{
flag = true;
}
else
{
cout << " ";
}
cout << *it;
}
cout << endl;
return 0;
}
list<int> CreateList(void)
{
string s;
getline(cin, s);
stringstream ss;
ss << s;
list<int> l;
string input;
while (ss >> input)
{
int tmp = 0;
for (int i = 0; i < input.size(); i++)
{
tmp = tmp * 10 + input[i] - '0';
}
l.push_back(tmp);
}
return l;
}