定义元素类型为int、元素个数不受限制的集合类Set, 包括:<=(包含于)、==(相等)、!=(不等)、 |(并集)、 &(交集)、-(差集)、+=(增加元素)、-=(删除元素)等操作
2012-12-19 22:53
956 查看
什么都不多说了,直接上代码= =、
感谢汪二的帮忙,不然一直都有问题>.<考试的时候能把汪二随身携带就好啦
但是呢,还是要自力更生啦
感谢汪二的帮忙,不然一直都有问题>.<考试的时候能把汪二随身携带就好啦
但是呢,还是要自力更生啦
#include <iostream> using namespace std; struct IntSet{ int *inset; }; class Set{ private: int size; int *elements; public: Set(){size = 0;elements = NULL;} void show(); bool operator <=(Set &s); bool operator ==(Set &s); bool operator !=(Set &s); Set & operator |(Set &s); Set & operator &(Set &s); Set & operator -(Set &s); void operator +=(int x); void operator -=(int x); ~Set(){if (elements!=NULL){ delete []elements; } } }; void Set::show(){ for (int i = 0;i<size;i++) { cout<<elements[i]<<" "; } cout<<endl; } bool Set::operator<=(Set &s){ int count = 0; for (int i = 0;i<size;i++) { for (int z = 0;z<s.size;z++) { if (elements[i]==s.elements[z]) { count++; } } } if (count==size) { return true; }else return false; } bool Set::operator==(Set &s){ int count = 0; for (int i = 0;i<size;i++) { for (int z = 0;z<s.size;z++) { if (elements[i]==s.elements[z]) { count++; } } } if (count==size&&size==s.size) { return true; }else return false; } bool Set::operator !=(Set &s){ int count = 0; for (int i = 0;i<size;i++) { for (int z = 0;z<s.size;z++) { if (elements[i]==s.elements[z]) { count++; } } } if (count==size&&size==s.size) { return false; }else return true; } Set & Set:: operator | (Set &s){ Set *set = new Set; set->size = size; set->elements = new int[set->size]; for (int r= 0;r<size;r++ ) { set->elements[r] = elements[r]; } for (int i = 0;i<s.size;i++) { int count = 0; for (int j = 0;j<size;j++) { if (s.elements[i]!=elements[j]) { count++; } } if (count ==size) { int *temp = elements; set->size++; set->elements = new int[set->size]; for (int i1 = 0;i1<set->size-1;i1++) { set->elements[i1]= temp[i1]; } set->elements[set->size-1]= s.elements[i] ; } } return *set; } //交集 Set & Set:: operator & (Set &s){ Set *set = new Set; set->elements = NULL; set->size = 0; for (int i = 0;i<s.size;i++) { for (int j = 0;j<size;j++) { if (s.elements[i]==elements[j]) { int *temp = set->elements; set->size++; set->elements = new int[set->size]; for (int i1 = 0;i1<set->size-1;i1++) { set->elements[i1]=temp[i1]; } set->elements[set->size-1]=elements[j]; } } } return *set; } //差集 Set & Set:: operator - (Set &s){ Set *set = new Set; set->size = 0; set->elements = NULL; for (int i = 0;i<size;i++) { int count = 0; for (int j = 0;j<s.size;j++) { if (elements[i]!=s.elements[j]) { count++; } } if (count==s.size) { int *temp = set->elements; set->size++; set->elements = new int[set->size]; for (int i1 = 0;i1<set->size-1;i1++) { set->elements[i1] = temp[i1]; } set->elements[set->size-1] = elements[i]; } } return *set; } void Set::operator+=(int x){ int flag = 0; for (int i =0;i<size;i++) { if (x==elements[i]) { flag = 1; } } if (flag==0) { int *temp = elements; size++; elements = new int[size]; for (int i = 0;i<size-1;i++) { elements[i]= temp[i]; } elements[size-1]= x; }else{ cout<<x<<"已经在该集合中存在,添加失败。"<<endl; } } void Set::operator-=(int x){ int flag = 0; int pos; for (int i =0;i<size;i++) { if (x==elements[i]) { flag = 1; pos = i; } } if (flag ==0) { cout<<"该集合中不存在"<<x<<"这个元素,删除失败。"<<endl; }else{ int *temp = elements; size--; elements = new int[size]; for (int j = 0;j<pos;j++) { elements[j]=temp[j]; } for (int i= pos;i<size-1;i++) { elements[i]=temp[i+1]; } } } void main(){ Set set1 ; Set set2; Set set3; set1+=1; set1+=2; set1+=3; set2+=7; set2+=2; set1.show(); set3=set1|set2; set1.show(); }
相关文章推荐
- 用C语言定义Bool类型(包括数据表示和操作实现),至 少包含and(与)、or(或)、not(非)、equiv(相等)这4个操作。
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- 用C语言定义Bool类型(包括数据表示和操作实现),至 少包含and(与)、or(或)、not(非)、equiv(相等)这4个操作。
- C#控制台基础 两个int类型数组,求交集,并集,差集
- Java集合工具类(一)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集...
- Java集合工具类(二)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集...
- 两个ArrayList<String>() 的并集,交集,差集
- Java集合工具类(三)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集...
- 求解:System.IEquatable<T>”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“System.IEquatable<T>”类型的变量
- Oracle-27-集合操作(交集、并集、差集)&子查询之单行子查询
- SQL 操作结果集 -并集、差集、交集、结果集排序
- << 只有对数值右端的5位才有用 这样可以防止我们移位超过int类型所具有的位数
- Python 集合set()添加删除、交集、并集、集合操作详解
- Java数字的格式化&& Java list 交集、并集、差集,去重复并集
- sed<替换、删除、查询、增加>
- SQL 操作结果集 -并集、差集、交集、结果集排序
- < Unity 3D专栏 >批量操作,界面元素的显示状态
- C# List<T>的并集、交集、差集
- 使用jquery操作table元素:增加或删除一行
- Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式'