给定两个排序后的表,用C++求其交集和并集
来源:互联网 发布:淘宝商城情趣用品 编辑:程序博客网 时间:2024/05/15 23:50
<span style="color:#339999;">《数据结构与算法分析》练习3.4和3.5让求两个排序后的表的并集和交集,看到一篇</span><a target=_blank href="http://blog.csdn.net/jshmqjw/article/details/8977549" target="_blank"><span style="color:#ff0000;">博客</span></a><span style="color:#339999;">给出了代码,受启发自己写了一段,其中用到了那篇博客的部分代码,在此表示感谢。</span><p><span style="color:#339999;"> 我的主要想法是,由于表是排序后的,不断判断两个表的第一个值。求交集时,只取两者相等的值,而把小的那一个值去掉;求并集时,取小的那个值和相等的值,然后把小的那个值和相等的值去掉,注意最后由于可能一方先为empty,所以最后需要merge一下。话不多说,上代码:</span></p>
#include <list> #include "stdlib.h" using namespace std; void showList(list<int> t){ while (!t.empty()){ printf("%d ", t.front()); t.pop_front(); } printf("\n"); } int main(){ int a[8] = {0, 2, 3, 5, 6, 7, 9, 12}; int b[8] = {1, 2, 4, 5, 7, 8, 9, 13}; list<int> lt1(a, a+8); list<int> lt2(b, b+8); list<int> lt3(a, a+8); list<int> lt4(b, b+8); list<int> ltr1, ltr2; //求交集if(lt1.empty() || lt2.empty()){return 0;}while (!lt1.empty() && !lt2.empty()){if(lt2.front()>lt1.front()){lt1.pop_front();continue;}if(lt2.front()==lt1.front()){ltr1.push_back(lt1.front());lt1.pop_front();lt2.pop_front();continue;}if(lt2.front()<lt1.front()){lt2.pop_front();continue;}}
printf(<span class="string">"the intersection of the two sets is: "</span><span>); </span>showList(ltr1);<pre class="cpp" name="code"> //求并集if(lt3.empty()){showList(lt2);return 0;}if(lt4.empty()){showList(lt1);return 0;}while (!lt3.empty() && !lt4.empty()){if(lt4.front()>lt3.front()){ltr2.push_back(lt3.front());lt3.pop_front();continue;}if(lt4.front()==lt3.front()){ltr2.push_back(lt3.front());lt3.pop_front();lt4.pop_front();continue;}if(lt4.front()<lt3.front()){ltr2.push_back(lt4.front());lt4.pop_front();continue;}}ltr1.merge(lt3);ltr1.merge(lt4);
printf(<span class="string">"the union of the two sets is: "</span><span>); </span>showList(ltr2);return 0;}
0 0
- 给定两个排序后的表,用C++求其交集和并集
- 给定两个排序后的链表L1\L2,仅用基本表操作求链表的交集和并集
- 输入两个闭区间,求其交集,并集和差集(C++):
- 数据结构与算法分析 c++11 练习3.4 3.5 给定两个已排序的表L1和L2,求交集和并集
- 两个已排序的List<Integer>求其交集
- 求两个链表的并集和交集
- 求两个链表的并集和交集
- 算法5:求两个已排序数组的交集和并集
- 单项链表 练习3.4 给定两个已排序的表求交集
- Python -- 两个列表的差集、并集和交集
- 求两个集合的交集、差集和并集
- java求两个集合的交集和并集
- 求两个数组的交集和并集
- java求两个集合的交集和并集
- 求两个数组的交集和并集
- matlab:求两个集合的 交集 和 并集
- C++ 求两个集合的交集和并集
- 求两个集合的交集和并集
- java泛型要点
- java实现一定规则下的时间段或单元数统计
- 编辑文本框_FrameUtil.java
- 比特币中文维基
- Linux shell重定向
- 给定两个排序后的表,用C++求其交集和并集
- SniperEliteV2没有声音的解决办法
- jni环境搭建测试实例
- 双目视觉SLAM讲解1
- ActiveMQ入门实例
- 继承关系的对象创建过程
- Record
- 视觉SLAM漫谈(二):图优化理论与g2o的使用
- centos6.5下面编译安装mysql5.7.10版本