第3周專案3 求集合並集

2021-07-22 18:51:30 字數 2858 閱讀 2655

問題及**:

/*

*    檔名稱:(1)順序表list.cpp (2)順序表list.h (3)集合並集.cpp

*    作        者:馬賽

*    完成日期:2023年9月16日

*    問題描述:假設有兩個集合 a 和 b 分別用兩個線性表 la 和 lb 表示,即線性表中的資料元素即為集合中的成員。設計演算法,用函式unionlist(list la, list 

*    輸入描述:無輸入。 

*    程式輸出:合併後的線性表lc。

*/順序表list.h部分的**

//包含定義順序表資料結構的**、巨集定義、要實現演算法的函式的宣告。

#ifndef list_h_included

#define list_h_included

#define maxsize 50

typedef int elemtype;

typedef struct

sqlist;

void createlist(sqlist *&l, elemtype a, int n);//用陣列建立線性表

void initlist(sqlist *&l);//初始化線性表initlist(l)

void destroylist(sqlist *&l);//銷毀線性表destroylist(l)

bool listempty(sqlist *l);//判定是否為空表listempty(l)

int listlength(sqlist *l);//求線性表的長度listlength(l)

void displist(sqlist *l);//輸出線性表displist(l)

bool getelem(sqlist *l,int i,elemtype &e);//求某個資料元素值getelem(l,i,e)

int locateelem(sqlist *l, elemtype e);//按元素值查詢locateelem(l,e)

bool listinsert(sqlist *&l,int i,elemtype e);//插入資料元素listinsert(l,i,e)

bool listdelete(sqlist *&l,int i,elemtype &e);//刪除資料元素listdelete(l,i,e)

順序表list.cpp部分**

//實現各種演算法的函式定義

#include #include #include "順序表list.h"

//用陣列建立線性表

void createlist(sqlist *&l, elemtype a, int n)

//初始化線性表initlist(l)

void initlist(sqlist *&l)   //引用型指標

//銷毀線性表destroylist(l)

void destroylist(sqlist *&l)

//判定是否為空表listempty(l)

bool listempty(sqlist *l)

//求線性表的長度listlength(l)

int listlength(sqlist *l)

//輸出線性表displist(l)

void displist(sqlist *l)

//求某個資料元素值getelem(l,i,e)

bool getelem(sqlist *l,int i,elemtype &e)

//按元素值查詢locateelem(l,e)

int locateelem(sqlist *l, elemtype e)

//插入資料元素listinsert(l,i,e)

bool listinsert(sqlist *&l,int i,elemtype e)

//刪除資料元素listdelete(l,i,e)

bool listdelete(sqlist *&l,int i,elemtype &e)

集合並集main部分的**

#include "順序表list.h"

#include void unionlist(sqlist *la, sqlist *lb, sqlist *&lc)

lena=listlength(la);         //求線性表la的長度

for (i=1; i<=listlength(lb); i++)

}//用main寫測試**

int main()

;    createlist(sq_a, a, 6);

printf("la: ");

displist(sq_a);

elemtype b[6]= ;

createlist(sq_b, b, 5);

printf("lb: ");

displist(sq_b);

unionlist(sq_a, sq_b, sq_c);

printf("lc: ");

displist(sq_c);

return 0;

}

執行結果:

知識點總結;

(1)除了實現unnionlist函式外,還需要在main函式中設計**,呼叫unionlist進行測試和演示;

(2)可以充分利用前面建好的演算法庫,在程式頭部直接加 #include「list.h」即可;

(3)也可以將實現演算法中需要的線性表的基本運算對應的函式,與自己設計的所有程式放在同乙個檔案中。

學習心得:

只要建立了乙個屬於自己的演算法庫,在一些情況下非常方便,既節省了很多的時間,又節省了很多空間,使程式的介面更加的簡潔幹練

第3周專案3 求集合並集

問題 檔名稱 專案3.cbp 作 者 王聰 完成日期 2015年9月17日 版 本 號 v1.0 問題描述 假設有兩個集合 a 和 b 分別用兩個線性表 la 和 lb 表示,即線性表中的資料元素即為 集合中的成員。設計演算法,用函式unionlist list la,list lb,list lc...

第3周 專案3 求集合並集

檔名稱 1.pp 完成日期 2015年9月18日 問題描述 求集合並集 include include define maxsize 50 typedef int elemtype typedef struct sqlist void createlist sqlist l,elemtype a,i...

第3周專案3 求集合並集

檔名稱 專案3 求集合並集.cpp 作 者 陳勝男 完成日期 2015年10月9日 版 本 號 v1.0 問題描述 假設有兩個集合 a 和 b 分別用兩個線性表 la 和 lb 表示,即線性表中的資料元素即為集合中的成員。設計演算法,用函式unionlist list la,list lb,list...