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

2021-08-30 15:17:22 字數 2504 閱讀 2494

實驗內容:

(1)建立乙個空的集合;

(2)從陣列元素建立集合;

(3)查詢集合中是否存在元素x;

(4)往集合中增加元素x;    (未做)

(5)刪除集合的元素x;     (未做)

(6)求兩個集合的並集;

(7)求兩個集合的交集;

(8)輸出集合。

get到的知識點:

1.對於下面這種定義順序表的方式,若主函式中直接定義了乙個set set; 則不再需要malloc動態分配儲存空間,切記!

typedef struct sq_listset;

2.如何將乙個字元陣列作為引數傳到子函式中

void initsetfromarray(set *head, data_type ar, int n);

void main(void);

data_type b = ;

initsetfromarray(&set1, a, 4);

}//這個還需仔細研究研究??????

3.語句簡化

head->data[head->count] = set2.data[i];

head->count++;

//上面兩句話等價於  head->data[head->count++] = set2.data[i];

//先用原值進行計算,然後+1

演算法設計:

用線性表來儲存集合,結構體中包含集合的大小、存放集合的陣列。

#includetypedef  unsigned int  boolean;

#define true 1

#define false 0

typedef char data_type;

#define maxsize 100

typedef struct sq_listset;

void initset(set *head);

void initsetfromarray(set *set, data_type ar, int count);

void showset(set set);

boolean findsetelement(set set, data_type x);

void unionset(set set1, set set2, set *head);

void intersectionset(set set1, set set2, set *head);

//求兩個集合的交集

void intersectionset(set set1, set set2, set *head) }}

//求兩個集合的並集

void unionset(set set1, set set2, set *head)

head->count = set1.count;

for(i = 0; i < set2.count; i++)

} }//查詢集合中是否存在元素x

boolean findsetelement(set set, data_type x)

} return false;

}//顯示集合中的元素

void showset(set set)

printf("\n");

}//初始化乙個集合:將陣列中的值複製到集合中

void initsetfromarray(set *head, data_type ar, int n)

head->count = n;

}//初始化乙個空集合

void initset(set *set)

void main(void);

data_type b = ;

set set1;

set set2;

set set3;

set set4;

initsetfromarray(&set1, a, 4);

printf("第乙個集合中的元素為:");

showset(set1);

initsetfromarray(&set2, b, 6);

printf("第二個集合中的元素為:");

showset(set2);

initset(&set3);

unionset(set1, set2, &set3);

printf("這兩個集合的並集中的元素為:");

showset(set3);

initset(&set4);

intersectionset(set1, set2, &set4);

printf("這兩個集合的交集中的元素為:");

順序表應用(2)

檔名稱 main.cpp,list.cpp,list.h 完成日期 2015年9月18日 版本號 vc 6.0 問題描述 將奇數移到偶數前面並且保證時間複雜度為o n 空間複雜度為o 1 輸入描述 無 程式輸出 移完後的結果 include include define maxsize 50 typ...

順序表應用 2

2 將所在奇數移到所有偶數的前面,要求演算法的時間複雜度為o n 空間複雜度為o 1 list.h define maxsize 50 typedef int elemtype typedef struct sqlist void createlist sqlist l,elemtype a,int...

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

1 用陣列a,b,c,e表示集合。假定a b e 輸入陣列a,b,e 全集 輸入資料時要求檢查資料是否重複 集合中的資料要求不重複 要求集合a,b是集合e的子集。2 兩個集合的並運算 把陣列a中各個元素先儲存在陣列c中。將陣列b中的元素逐一與陣列a中的元素進行比較,把不相同的元素新增到陣列c中,陣列...