資料結構 線性表(加入一些運算)

2021-07-05 07:13:40 字數 2767 閱讀 4064

*writer:羅海員

*date:2023年9月15日

*版本:v1.0.1

*作業系統:xp

*執行環境:vc6.0

*問題描述:1.目的是要測試「建立線性表」的演算法createlist,為檢視建表的結果,需要實現「輸出線性表」的演算法displist。

2.在研習displist中發現,要輸出線性表,還要判斷表是否為空,這樣,實現判斷線性表是否為空的演算法listempty成為必要。

3.再加上main函式,這個程式由4個函式構成。main函式用於寫測試相關的**。

*輸入描述:判斷表是否為空,實現判斷表是否為空的演算法listempty。

*演算法庫包括:

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

2.main函式,包括對函式的測試,和函式的呼叫(測試程式)

3.用陣列建立線性表createlist(l)

輸出線性表displist(l)

判定是否為空表listempty(l)

*程式輸出:需要實現「輸出線性表」的演算法dislist*/

/*在已經建立線性表的基礎上:

1.求線性表的長度listlength

2.求線性表l中指定位置的某個資料元素getelem

3.查詢元素locateelem

就在原程式的基礎上增加:

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

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

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

下面是將這三個要求全部完成後的結果:

*/

#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("1.此線性表的長度為:%d\n", listlength(sq)); //測試求長度

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

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

else

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

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

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

else

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

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

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

// else

// printf("4.值為8的元素沒有被找到!\n");

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

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

// else

printf("5.值為100的元素沒有被找到!\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)

程式執行結果:

資料結構 線性表(一)

我們在學習c語言的時候都用過陣列,再學深一點大概會學到結構體,鍊錶之類的。正常情況下,對於這一類的資料結構,我們都能看到他們的共同點。每乙個資料項之間都只跟另乙個資料項鏈結,所以我們把這一類的資料結構叫做線性表。不考慮實際記憶體位址的分配,從邏輯意義上看,我們可以把資料項都連起來,形成乙個像表一樣的...

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...

資料結構 線性表

參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...