*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...