📄 orderset.h
字号:
typedef OrderedList OrderedSet;
status CrtNullSet(OrderedSet &T)
{
// 构造一个空集T
if (InitList(T)) // 构造空集T
return TRUE;
else return FALSE;
}//CrtNullSet
void DestroySet(OrderedSet &T)
{
// 销毁集合 T 的结构
DestroyList(T);
}//DestroyList
void AddElem(OrderedSet &T, ElemType e)
{
// 若集合T中不含和e相同的元素,则添加元素e,否则空操作
if ( e > 0 )
InsertElem(T,e);
}//AddElem
void DelElem(OrderedSet &T, ElemType e)
{
// 若集合T中含和e相同的元素,则删除之,否则空操作
ElemType k;
if ( k = LocatePos(T, e))
DeleteElem(T, k);
}//DelElem
int SetLength(OrderedSet T)
{
// 求集合元素的个数
return T.size;
}
void Union(OrderedSet &T, OrderedSet S1, OrderedSet S2)
{
// 求集合S1和S2的并集T
int ia,ib;
ElemType a,b;
if (InitList(T)){ // 构造空的结果集T并开始求并集
ia = 1; ib = 1; // ia和ib分别指示S1和S2中元素序号
while ( (ia <= SetLength (S1)) || (ib <= SetLength (S2)) ) { // S1或S2尚有元素
a = GetElem(S1, ia ); b = GetElem(S2, ib);
// a和b为两集合中进行比较的当前元素
if (a<=b){ // 处理a<=b的情况
InsertElem(T, a); // 在 T 中插入一个其值和a相同的元素
ia ++;
if (a == b) ib ++;
}//if
else { // 处理b<a的情况
InsertElem(T, b); // 在 T 中插入一个其值和b相同的元素
ib ++;
}//else
}//while
} //if
} //Union
void Intersection(OrderedSet &T, OrderedSet S1, OrderedSet S2)
{
// 求集合S1和S2的交集T
int ia,ib;
ElemType a,b;
if (InitList(T)) { // 构造空的结果集T并开始求交集
ia = 1; ib = 1; // ia和ib分别指示S1和S2中元素序号
while ( (ia <= SetLength (S1)) && (ib <= SetLength (S2)) ) {
a = GetElem(S1, ia ); b = GetElem(S2, ib);
// a和b为两集合中进行比较的当前元素
if ( a < b ) ia ++;
else if ( a > b ) ib ++;
else { // 处理 a = b的情况
InsertElem(T, a); // 在 T 中插入一个其值和a相同的元素
ia ++; ib ++;
}//else
}//while
} //if
} //Intersection
void Difference(OrderedSet &T, OrderedSet S1, OrderedSet S2)
{
// 求集合S1和S2的差集T
int ia,ib;
ElemType a,b;
if (InitList(T)) { //构造空的结果集T并开始求差集
ia = 1; ib = 1; // ia和ib分别指示La和Lb中元素序号
while ( (ia <= SetLength (S1)) || (ib <= SetLength (S2)) ) { // S1或S2尚有元素
a = GetElem(S1, ia ); b = GetElem(S2, ib);
// a和b为两集合中进行比较的当前元素
if ( b <= a ) { // 处理b<=a的情况
ib ++;
if (a == b) ia ++;
}//if
else { // 处理a<b的情况
InsertElem(T, a); // 在T 中插入一个其值和a相同的元素
ia ++;
}//else
}//while
} //if
} //Difference
void CreateSet(OrderedSet &ST)
{
//通过输入元素的数据,构建一个集合
ElemType elem;
CrtNullSet(ST);
cin >> elem;
while ( elem != -1 ){
AddElem(ST,elem);
cin >> elem;
}//while
}//CreateSet
void PrintSet(OrderedSet T)
{
// 输出集合的全部元素
cout<<endl<<"{";
ListTraverse(T,output);
cout<<"}";
} //PrintSet
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -