集合的合并
2014-05-07 16:56
99 查看
上次老师布置的作业没交,保存在这里,以后看。。
代码如下:
代码如下:
#include<cstdio> #include<iostream> #include<cstring> using namespace std; const int maxNum=20; class Set { private: int size; int *elems; int num; public: Set(int sz=maxNum) { num=0; size=sz; elems=new int[size]; } ~Set() { delete []elems; } bool IsMember(int x) { for(int i=1;i<=num;i++) if(elems[i]==x) return true; return false; } bool AddElement(int x) { if(IsMember(x)) return true; else { elems[++num]=x; return true; } return false; } int Union(Set &s1,Set &s2) { if(size<(s1.num+s2.num)) { size=s1.num+s2.num; delete []elems; elems=new int[size]; } for(int i=1;i<=s1.num;i++) elems[++num]=s1.elems[i]; for(int i=1;i<=s2.num;i++) { if(!IsMember(s2.elems[i])) elems[++num]=s2.elems[i]; } } void sort() { int tmp; for(int i=0;i<num-1;i++) for(int j=1;j<=num-i-1;j++) { if(elems[j]>elems[j+1]) { tmp=elems[j]; elems[j]=elems[j+1]; elems[j+1]=tmp; } } } void show() { for(int i=1;i<=num;i++) cout<<elems[i]<<ends; cout<<endl; } }; int main() { int i,a; Set s1,s2,s3; int n1,n2; cin>>n1; for(i=1;i<=n1;i++) { scanf("%d",&a); s1.AddElement(a); } cin>>n2; for(i=1;i<=n2;i++) { scanf("%d",&a); s2.AddElement(a); } s3.Union(s1,s2); s3.sort(); cout<<"s1 union s2="; s3.show(); } /* 10 10 9 8 7 6 5 4 3 2 1 12 10 11 12 13 14 15 16 17 18 19 20 21 */
相关文章推荐
- 合并有交集的集合
- python 集合set的创建,更改,遍历,元算合并,交集,补集
- 并查集 最大集合并且按顺序输出集合内元素。
- Linux下的C语言编程——合并两个字符集合
- 【转载】多个集合合并成没有交集的集合-实现
- 两个集合的合并
- 算法马拉松29 美丽的集合(启发式合并/bitset)
- 多个集合合并成没有交集的集合-实现
- 对象数组集合中对象数组比较合并
- 将多个集合合并成没有交集的集合
- 黑马程序员---ArrayList集合嵌套HashMap集合并遍历
- c语言,用顺序表的原理合并两个集合
- 集合中取出列名相同的,并把其他列的值合并成数组
- 集合的合并
- 线性表的合并已知两个集合A和B,现要求一个新的集合A=A∪B。例如,设A=(7,5,3,11),B=(2,6,3),合并后A=(7,5,3,11,2,6)。
- 字符串集合的合并
- IO流--SequenceInputStream切割(合并)文件--优化(Properties集合相结合)
- 合并两个字符集合为一个新集合,每个字符串在新集合中仅出现一次,函数返回新集合中字符串。 如: s1集合{“while”,”for”,”switch”,”if”,”continue”
- java.util.ConcurrentModificationException ,遍历集合并同时修改集合,并发造成的异常解决办法
- 两个非递减有序集合合并为一个非递减有序集合