⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orderset.h

📁 该程序主要完成集合运算方面的一些内容
💻 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 + -