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

2021-07-22 19:45:59 字數 4266 閱讀 9661

問題及**:

/*

*檔名稱:fagnzhou.cpp

*作 者:呂方舟

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

*版 本 號:v1.0

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

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

完成測試。

*輸入描述:無

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

*/

實現線性表的createlist(建立線性表),display(輸出線性表),listempty(判斷線性表是否為空)函式功能:
#include using namespace std;

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

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

typedef struct

sqlist;

//用陣列建立線性表:

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

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

bool listempty(sqlist *l)

//輸出線性表displist(l):

void displist(sqlist *l)

int main()

; createlist(sq, x, 6);

if(listempty(sq))

printf("您的表是空表");

else displist(sq);

return 0;

}

以上**執行結果:

在以上函式基礎上,再增加listlength(求線性表長度),getelement(求線性表中某元素的值),locateelem(查詢線性表中某元素的位置)函式:
#include using namespace std;

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

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

typedef struct

sqlist;

//用陣列建立線性表:

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

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

bool listempty(sqlist *l)

//輸出線性表displist(l):

void displist(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)

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;

}

以上**執行結果:

實現listinsret(插入資料元素),listdelete(刪除資料元素),initlist(初始化線性表),destroylist(銷毀線性表)函式:

#include using namespace std;

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

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

typedef struct

sqlist;

//用陣列建立線性表:

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

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

bool listempty(sqlist *l)

//輸出線性表displist(l):

void displist(sqlist *l)

void initlist(sqlist *&l)

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

l->data[n]=e;

l->length++;

return true;

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

void destroylist(sqlist *&l)

int main()

; createlist(sq, x, 6);

listinsert(sq, 1, 1);

listinsert(sq, 2, 3);

listdelete(sq,3,5);

destroylist(sq);

if(listempty(sq))

printf("您的表是空表");

else

displist(sq);

return 0;

}

不用銷毀鍊錶函式的執行結果:

使用銷毀函式的執行結果:

知識點總結:

線性表中建立線性表,輸出線性表,判斷線性表是否為空,求線性表長度,求線性表中某元素的值,求線性表中某元素的位置等的基本演算法。

學習心得:

通過這次練習,我更加熟悉了線性表的幾種基本運算,為以後編寫更加複雜的線性表程式建立了基礎。

第三週 專案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在不同場合可以根據問題...