23.编写整数集合类IntSet,完成主函数中使用该类所要求的功能。
#include <iostream>
using namespace std;
/**********Program**********/
struct IntSet {
IntSet() {
size= 1;
len = 0;
}
int pdata[100];
int size;
int len;
void add(int n) {
int m = 1;
for (int i = 0; i < len; i++) {
int a = pdata[i];
if (a == n)
{
m = 0;
break;
}
}
if (len == size)
size += 1;
if(m)
{
pdata[len] = n;
len++;
}
}
void add(IntSet tSet) {
for (int i = 0; i < tSet.len; i++) {
int d = tSet.pdata[i];
add(d);
}
}
int getSize() {
return len;
}
int getAt(int n){
if (n == 0) {
for (int i = 0; i < len; i++)
for (int j = 0; j < len - 1; j++)
if (pdata[j] > pdata[j + 1]) {
int a = pdata[j + 1];
pdata[j + 1] = pdata[j];
pdata[j] = a;
}
}
return pdata[n];
}
void clear() {
for (int i = 0; i < len; i++)
pdata[i] = 0;
size = len = 0;
}
};
/********** End **********/
int main ()
{
IntSet mySet, tSet; //创建空集合
int m;
for(m=10;m>0;m--)
{
mySet.add(m); //将m加入到集合mySet中,注意:集合中不包含相同的元素
}
tSet.add(1);
tSet.add(20);
mySet.add(tSet); //将集合tSet中的元素合并到集合mySet中
for(m=0;m<mySet.getSize();m++) // getSize()获得集合元素个数
cout<<mySet.getAt(m)<<" "; //getAt(m)获得集合中的第m个元素(从0开始),这里要求从小到大输出
cout<<endl;
mySet.clear(); //清空集合
}