第3周專案1以順序表為例實踐

2021-07-05 07:26:28 字數 3273 閱讀 9296

問題及**:

(1)

/*    

檔名稱:專案1.cpp

完成日期:2015.9.15

問題描述:

(1)目的是要測試「建立線性表」的演算法createlist,為檢視建表的結果,

需要實現「輸出線性表」的演算法displist。在研習displist中發現,要輸出

線性表,還要判斷表是否為空,這樣,實現判斷線性表是否為空的算

法listempty成為必要。這樣,再加上main函式,這個程式由4個函式構成。

main函式用於寫測試相關的**。

(2)在已經建立線性表的基礎上,求線性表的長度listlength、求線性表l中

指定位置的某個資料元素getelem、查詢元素locateelem的演算法都可以實現了。

就在原程式的基礎上增加:增加求線性表的長度listlength的函式並測試;

增加求線性表l中指定位置的某個資料元素getelem的函式並測試;增加查詢元

素locateelem的函式並測試;

輸入描述:無

程式輸出:5 8 7 2 4 9

*/ #include #include #define maxsize 50 //maxsize將用於後面定義儲存空間的大小

typedef int elemtype; //elemtype在不同場合可以根據問題的需要確定,在此取簡單的int

typedef struct

sqlist;

//自定義函式宣告部分

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

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

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

//實現測試函式

int main()

; createlist(sq, x, 6);

displist(sq);

return 0;

}//下面實現要測試的各個自定義函式

//用陣列建立線性表

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

//輸出線性表displist(l)

void displist(sqlist *l)

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

bool listempty(sqlist *l)

(2)

#include #include #define maxsize 50    //maxsize將用於後面定義儲存空間的大小

typedef int elemtype; //elemtype在不同場合可以根據問題的需要確定,在此取簡單的int

typedef struct

sqlist;

//自定義函式宣告部分

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

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

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

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

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

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

//實現測試函式

int main()

; elemtype a;

int loc;

createlist(sq, x, 6);

displist(sq);

printf("表長度:%d\n", listlength(sq)); //測試求長度

if(getelem(sq, 3, a)) //測試在範圍內的情形

printf("找到了第3個元素值為:%d\n", a);

else

printf("第3個元素超出範圍!\n");

if(getelem(sq, 15, a)) //測試不在範圍內的情形

printf("找到了第15個元素值為:%d\n", a);

else

printf("第15個元素超出範圍!\n");

if((loc=locateelem(sq, 8))>0) //測試能找到的情形

printf("找到了,值為8的元素是第 %d 個\n", loc);

else

printf("值為8的元素木有找到!\n");

if((loc=locateelem(sq, 17))>0) //測試不能找到的情形

printf("找到了,值為17的元素是第 %d 個\n", loc);

else

printf("值為17的元素木有找到!\n");

return 0;

}//下面實現要測試的各個自定義函式

//用陣列建立線性表

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

//輸出線性表displist(l)

void displist(sqlist *l)

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

bool listempty(sqlist *l)

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

int listlength(sqlist *l)

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

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

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

int locateelem(sqlist *l, elemtype e)

執行結果:

知識點總結:

線性表的創立及輸出檢測長度等基本運算。

學習心得:

剛剛接觸鍊錶不是很熟悉應該多多實踐。

第3周專案4 順序表應用(1)

檔名稱 h1.cpp 完成日期 2015年9月17日 版本號 vc6.0 問題描述 刪除元素在 x,y 之間的所有元素,要求演算法的時間複雜度為o n 空間複雜度為o 1 輸入描述 無 程式輸出 線性表的結果 include include define maxsize 50 typedef int...

第3周 專案4 順序表應用(1)

檔名稱 專案4.cbp 作 者 畢夢楠 完成日期 2015年9月25日 版 本 號 v1.0 問題描述 刪除元素在 x,y 之間的所有元素,要求演算法的時間複雜度為o n 空間複雜度為o 1 輸入描述 無 程式輸出 輸出調整後的線性表 ifndef list h included define li...

第3周 專案4 順序表應用(1)

檔名稱 專案3 求集合並集.cpp 作 者 滕健 完成日期 2016年9月15日 問題描述 定義乙個採用順序結構儲存的線性表,設計演算法完成下面的工作 1 刪除元素在 x,y 之間的所有元素,要求演算法的時間複雜度為o n 空間複雜度為o 1 輸入描述 若干資料 程式輸出 刪除元素後的線性表。演算法...