(C)順序表實現集合運算

2021-08-07 10:58:31 字數 2792 閱讀 7289

(1)用陣列a,b,c,e表示集合。假定a=,

b=, e=,

輸入陣列a,b,e(全集),輸入資料時要求檢查資料是否重複(集合中的資料要求不重複),要求集合a,b是集合e的子集。

(2)兩個集合的並運算:把陣列a中各個元素先儲存在陣列c中。將陣列b中的元素逐一與陣列a中的元素進行比較,把不相同的元素新增到陣列c中,陣列c便是集合a和集合b的並。

c語言演算法(線性表順序結構實現):

[cpp]view plain

copy

/**求集合的並集的函式**/

void

union_sq(sqlist la,sqlist lb,sqlist &lc)  

}  

(3)兩個集合的交運算:把陣列a中元素逐一與陣列b中的元素進行比較,將相同的元素放在陣列c中,陣列c便是集合a和集合b的交。

c語言演算法(線性表順序結構實現):

[cpp]view plain

copy

/**求集合的交集的函式**/

void

mix_sq(sqlist la,sqlist lb,sqlist &lc)  

}  

(4)兩個集合的差運算:將陣列a中的元素逐一與陣列b中的元素進行比較,把陣列a與陣列b不同的元素儲存在陣列c中,陣列c便是集合a和集合b的差a-b。

c語言演算法(線性表順序結構實現):

[cpp]view plain

copy

/**求集合的差集函式**/

void

differ_sq(sqlist la,sqlist lb,sqlist &lc)  

}  

(5)集合的補運算:將陣列e中的元素逐一與陣列a中的元素進行比較,把不相同的元素儲存到陣列c中,陣列c便是集合a關於集合e的補集。

求補集是一種特殊的集合差運算。

c語言演算法(線性表順序結構實現):

[cpp]view plain

copy

/**求集合的補集函式**/

void

comple_sq(sqlist la,sqlist lb,sqlist &lc,sqlist &ld)  

}  

二.源程式如下:

[cpp]view plain

copy

#include

#include

#define list_init_size 100 //初始表空間大小

#define listincrement 10 //表長增量

/**順序表的定義**/

typedef

struct

sqlist;  

sqlist la,lb,lc,ld; /**定義全域性變數**/

/**構造乙個空的線性表l**/

int initlist_sq(sqlist &l)

/**該函式的時間複雜度為o(n)**/

/**在順序表的邏輯為i的位置插入新元素e的函式**/

int listinsert_sq(sqlist &l,int

i,int e)

q = &(l.elem[i - 1]); //q為插入位置

for(p = &(l.elem[l.length - 1]); p >= q; --p)   

*(p + 1) = *p; //插入位置及之後的元素往右移

*q = e; //插入e

++l.length; //表長加1

return

0;  

}  /**建立乙個線性表,即輸入資料,根據集合定義:集合中的元素不能相等建立**/

void

createlist_sq(sqlist &l)  

else

inlist = false;  

if(!inlist && ch != 

'\n'

) listinsert_sq(l,l.length+1,ch);  

}  }  

/**判斷兩元素是否相等,若相等則返回true;否則返回false**/

int equal(int a,int b)

/**在順序線性表l中查詢第1個與e滿足compare()的元素位序,若找到,則返回其在l中的位序,否則返回0**/

intlocateelem_sq(sqlist l,char e,int(* compare)(int,int))

//該函式的時間複雜度為o(n)

/*銷毀線性表的函式*/

int clear_sq(sqlist &l)

/**列印順序表函式**/

void

print_sq(sqlist l)

/**求集合的並集的函式**/

void

union_sq(sqlist la,sqlist lb,sqlist &lc)

}  /**求集合的交集的函式**/

void

mix_sq(sqlist la,sqlist lb,sqlist &lc)

}  /**求集合的差集函式**/

void

differ_sq(sqlist la,sqlist lb,sqlist &lc)

}  /**求集合的補集函式**/

void

comple_sq(sqlist la,sqlist lb,sqlist &lc,sqlist &ld)

}  

實現順序表以及順序表的簡單運算

自定義標頭檔案 my list.h define crt secure no warnings ifndef my list h define my list h 檔案功能 實現線性表的基本運算 1 順序表的插入預算 2 順序表中元素的逆序 3 順序表的刪除運算 define max size 10...

實驗2 順序表的應用(集合運算)

實驗內容 1 建立乙個空的集合 2 從陣列元素建立集合 3 查詢集合中是否存在元素x 4 往集合中增加元素x 未做 5 刪除集合的元素x 未做 6 求兩個集合的並集 7 求兩個集合的交集 8 輸出集合。get到的知識點 1.對於下面這種定義順序表的方式,若主函式中直接定義了乙個set set 則不再...

順序表(C 實現)

順序表是基本的資料結構,建立seqlist類,主要包括類的預設成員函式 建構函式 析構函式 賦值運算子過載 順序表的基本功能實現。順序表 typedef int datatype class seqlist seqlist 析構函式 深拷貝 seqlist const seqlist s 拷貝建構函...