第3周 專案1 順序表的基本運算

2021-08-08 12:19:27 字數 4006 閱讀 9186

/*

*all right reserved.

*檔名稱:20170920.cpp

*完成日期;2023年9月20日

*版本號;v1.1

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

*輸入描述:建立線性表

*程式輸出:輸出線性表

*/

(1)測試「建立線性表」的演算法createlist,為檢視建表的結果,需要實現「輸出線性表」的演算法displist。要輸出線性表,還要判斷表是否為空。

#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)在已經建立線性表的基礎上,求線性表的長度listlength、求線性表l中指定位置的某個資料元素getelem、查詢元素locateelem。

//自定義函式宣告部分

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個基本運算:插入資料元素listinsert、初始化線性表initlist都可以同法完成。

//自定義函式宣告部分

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

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

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

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

//初始化線性列表

void initlist(sqlist *&l)

//插入資料元素

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

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

bool listempty(sqlist *l)

//輸出線性表displist(l)

void displist(sqlist *l)

//實現測試函式

int main()

執行結果:

知識點總結:(1

)初始化線性表initlist(&l):構造乙個空的線性表l(2

)銷毀線性表destroylist(&l):釋放線性表l占用的記憶體空間(3

)判線性表是否為空表listempty(l):若l為空表,則返回真,否則返回假(4

)求線性表的長度listlength(l):返回l中元素個數(5

)輸出線性表displist(l):當線性表l不為空時,順序顯示l中各節點的值域(6

)求線性表l中指定位置的某個資料元素getelem(l,

i,&e):用e返回l中第

i個元素的值(7

)查詢元素locateelem(l,e):返回線性表l中第

1個與e相等的序號,找不到返回0(

8)插入元素listinsert(&l,ii

個位置插入元素e;(9

)刪除元素listdelete(&l,ii

個元素,有e返回刪除的值;

這九個要點可以作為乙個順序表的基本套路使用。

學習心得:

學會參考,將參考到的東西融入自己的心裡,才是最值得的東西

第3周專案1 順序表的基本運算

問題 檔名稱 順序表的基本運算.cpp 作 者 張芸嘉 完成日期 2015年9月21日 版 本 號 v1.0 問題描述 實現順序表基本運算有演算法,依據 最小化 的原則進行測試。所謂最小化 原則,指的是利用盡可能少的基本運算,組成乙個程式,並設計main函式 完成測試。輸入描述 無 程式輸出 依據各...

第3周專案1 順序表的基本運算(3)

檔名稱 第3周專案1 順序表的基本運算 3 cpp 作 者 陳勝男 完成日期 2015年10月9日 版 本 號 v1.0 問題描述 3 其餘的4個基本運算 插入資料元素listinsert 刪除資料元素listdelete 初始化線性表initlist 銷毀線性表destroylist都可以同法完成...

第3周專案1 順序表的基本運算(1)

檔名稱 第3周實踐專案 順序表的基本運算.cpp 作 者 滕健 完成日期 2016年9月13日 版 本 號 v1.0 問題描述 領會 0207將演算法變程式 部分建議的方法,將順序表部分的演算法變成程式。實現順序表基本運 則進行測試。所謂最小化原則,指的是利用盡可能少的基本運算,組成乙個程式,並設計...