第三週專案1 順序表的基本運算

2021-07-22 19:13:47 字數 4329 閱讀 2248

問題及**:

/*   

*檔名稱:111.cpp

*作 者:陳夢雪

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

*版 本 號:v1.0

*

*問題描述:實現順序表基本運算有演算法,依據「最小化」的原則進行測試。所謂最小化

原則,指的是利用盡可能少的基本運算,組成乙個程式,並設計main函式

完成測試。

*輸入描述:無

*程式輸出:依據各個函式而定

*/

(1)目的是要測試「建立線性表」的演算法createlist,為檢視建表的結果,需要實現「輸出線性表」的演算法displist。在研習displist中發現,要輸出線性表,還要判斷表是否為空,這樣,實現判斷線性表是否為空的演算法listempty成為必要。這樣,再加上main函式,這個程式由4個函式構成。main函式用於寫測試相關的**。

#ifndef list_h_included  

#define list_h_included

#include #include #define maxsize 50

typedef int elemtype;

typedef struct

sqlist;

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

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

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

#endif

//測試函式

int main()

; createlist(sq, x, 8);//最後為0則是空表

if((listempty(sq))>0) //測試不能找到的情形

printf("是空表\n");

else

printf("不是空表\n");

displist(sq);

return 0;

} //定義各個自定義函式

//用陣列建立線性表

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

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

bool listempty(sqlist *l)

//輸出線性表displist(l)

void displist(sqlist *l)

執行結果:

(2)在已經建立線性表的基礎上,求線性表的長度listlength、求線性表l中指定位置的某個資料元素getelem、查詢元素locateelem的演算法都可以實現了。就在原程式的基礎上增加: 

1.增加求線性表的長度listlength的函式並測試; 

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

3.增加查詢元素locateelem的函式並測試; 

#include #include #define maxsize 50     

typedef int elemtype;

typedef struct

sqlist;

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

void displist(sqlist *l);

bool listempty(sqlist *l);

int listlength(sqlist *l);

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

int locateelem(sqlist *l, elemtype e);

int main()

; elemtype a;

int loc;

createlist(sq, x, 8);

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, 0))>0) //測試能找到的情形

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

else

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

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

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

else

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

return 0;

}

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

void displist(sqlist *l)

bool listempty(sqlist *l)

int listlength(sqlist *l)

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

int locateelem(sqlist *l, elemtype e)

執行結果:

(3)其餘的4個基本運算:插入資料元素listinsert、刪除資料元素listdelete、初始化線性表initlist、銷毀線性表destroylist

#include #include #define maxsize 50     

typedef int elemtype;

typedef struct

sqlist;

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

void displist(sqlist *l);

bool listempty(sqlist *l);

int listlength(sqlist *l);

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

int locateelem(sqlist *l, elemtype e);

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

void initlist(sqlist *&l);

int main()

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

void displist(sqlist *l)

bool listempty(sqlist *l)

int listlength(sqlist *l)

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

int locateelem(sqlist *l, elemtype e)

//初始化線性表

void initlist(sqlist *&l)

//插入資料元素

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

執行結果:

知識點總結:

對鍊錶的建立、插入、刪除、輸出等功能進行了回顧,也鍛鍊了使用函式的能力,在日後省了不少時間。

學習心得:

知識在於積累。

第三週 專案1 順序表的基本運算

檔名稱 cpp.cpp 作者 王超 完成日期 2015.9.18 問題描述 順序表的基本運算 include include define maxsize 50 typedef int elemtype typedef struct sqlist void createlist sqlist l,e...

第三週 專案1 順序表的基本運算

問題及 檔名稱 test.cpp 作 者 馬笑媛 完成日期 2015.9.16 版 本 號 v1.0 問題描述 目的是要測試建立線性表的演算法。包括求線性表的長度,求線性表中指定位置的某個元素 查詢元素 插入資料元素 刪除資料元素 初始化線性表 銷毀線性表。include include defin...

第三週專案1 順序表的基本運算

問題及 檔名稱 順序表的基本運算 完成日期 2015年9月18日 輸入描述 線性表 程式輸出 測試結果 1 include include define maxsize 50 maxsize將用於後面定義儲存空間的大小 typedef int elemtype elemtype在不同場合可以根據問題...