设计一个算法求A和B两个单链表表示的集合的交集、并集、差集,要那种可以输入集合验证的那种,在C++环境下

不用顺序表,单链表就好,着急谢谢了
2025-02-26 09:17:07
推荐回答(1个)
回答1:

算法请参考STL的实现源码,例子如下
#include "stdafx.h"

#include
#include
#include

int main ()
{
std::list lstVal1, lstVal2;
lstVal1.push_back(1);
lstVal1.push_back(2);
lstVal1.push_back(3);
lstVal2.push_back(3);
lstVal2.push_back(4);
lstVal2.push_back(5);

/// 求链表并集.
std::set_union(lstVal1.begin(), lstVal1.end(), lstVal2.begin(), lstVal2.end(), std::ostream_iterator(std::cout, " "));
std::cout << std::endl;

/// 求链表交集.
std::set_intersection(lstVal1.begin(), lstVal1.end(), lstVal2.begin(), lstVal2.end(), std::ostream_iterator(std::cout, " "));
std::cout << std::endl;

/// 求链表差.
std::set_difference(lstVal1.begin(), lstVal1.end(), lstVal2.begin(), lstVal2.end(), std::ostream_iterator(std::cout, " "));
std::cout << std::endl;

return 0;
}
输出
1 2 3 4 5
3
1 2
请按任意键继续. . .

注意: 参与的链表要求已经按相同的准则排序