📄 exp.cpp
字号:
#include <stdlib.h>
#include <time.h>
#include "SQList.h"
void CrtSetList(List<int>&,int); // 为集合产生若干互不相等的整数插入表的原型声明
void SetUnion(List<int>&,List<int>&);// 集合"并"运算的原型声明
void visit(int &i);
void main()
{ //声明List对象La,Lb,类参数List_entry用<int>实例化
List<int> La,Lb; // La,Lb代表集合
int s1, s2; // s1, s2是存放La,Lb大小的变量
time_t t; srand((unsigned)time(&t)); //初始化随时间变化的随机数种子
cout<<"Please input Size of SetA && SetB =? =? (<=15)";
cin>>s1>>s2; // 输入集合A,B元素数<=15, 以保证"并"后La的元素数<=30
cout<<"\nSet A = { "; // 输出集合A的名称
CrtSetList(La,s1); // 创建集合A并输出集合元素
cout<<"}\nSet B = { ";// 输出集合B的名称
CrtSetList(Lb,s2);
SetUnion(La,Lb); // 求集合A与集合B的"并"
cout<<"}\n\n A Union B = { ";
La.traverse(visit); cout<<" }\n";
}
void CrtSetList(List<int>&L,int n) // 为集合产生n个互不相等的整数插入顺序表
{int x,i,j ;
for(i=0; i<n; i++) //用随机数发生器产生n个集合元素,不得重复
{ do{ x=rand() % 37; } // 产生0-36间的随机整数(要求各元素值不等)
while((j=L.Find(x))!=-1); // 在集合中找x, 找不到则脱离循环
L.insert(L.size(),x); // 插入表尾
cout<<x<<" "; // 输出x ( 集合元素边产生边输出)
}
}
void SetUnion(List<int>&La,List<int>&Lb)
// 将La表和Lb表所表示的集合做"并",存入La表,Lb表被清空。
{int i,k,b;
for(i=Lb.size(); i>0; i--) //从Lb表中逐次删除素尾元素,这样不必移动元素
{ Lb.remove(i-1,b); //调用删除算法,被删元素存入b
k=La.Find(b); // 在La表中查找b
if(k==-1) //La表中找不到元素b
La.insert(La.size(), b); // 插入至la表尾
} //end_for
}
void visit(int &i)
{ cout<<i<<' '; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -