順序表的基本運算
以順序表為例:
(1)目的是要測試「建立線性表」的演算法createlist,為檢視建表的結果,需要實現「輸出線性表」的演算法displist。在研習displist中發現,要輸出線性表,還要判斷表是否為空,這樣,實現判斷線性表是否為空的演算法listempty成為必要。這樣,再加上main函式,這個程式由4個函式構成。main函式用於寫測試相關的**。
#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的演算法都可以實現了。就在原程式的基礎上增加: 求線性表的長度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("表長度:%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)
執行結果為:
順序表的基本運算
問題及 標頭檔案 2015,煙台大學計算機與控制工程學院 完成日期 2015年9月7日 版本 v1.0 問題描述 測試 建立線性表 的演算法createlist,為檢視建表的結果,需要實現 輸出線性表 的演算法displist。要輸出線性表,還要判斷表是否為空,這樣,實現判斷線性表是否為空的演算法l...
順序表的基本運算
問題及 2015,煙台大學計算機與控制工程學院 完成日期 2015年9月14日 版本 v1.0 問題描述 運用插入資料元素,刪除資料元素,初始化線性表,銷毀線性表 include include define maxsize 50 maxsize將用於後面定義儲存空間的大小 typedef int ...
順序表的基本運算
include malloc 等 include null,printf 等 函式結果狀態 define true 1 define false 0 define overflow 2 define ok 1 define error 0 typedef int status status是函式的型...