第3周專案2 建設「順序表」演算法庫

2021-08-08 12:19:27 字數 3097 閱讀 1974

/*   

*檔名稱:dsitem3-2.cpp

*作 者:於子淇

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

*版 本 號:code::blocks 12.11

*

*問題描述:將專案一的基礎下,進一步運用多檔案組織自己的「順序表」演算法庫

*輸入描述:無

*程式輸出:見程式執行結果演示

*/

list.cpp

#include #include #include "list.h"

//下面實現要測試的各個自定義函式

//用陣列建立線性表

void createlist(sqlist *&l, elemtype a, int n)//由a中的n個元素建立順序表

//輸出線性表displist(l)

void displist(sqlist *l)

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

bool listempty(sqlist *l)

//求線性表中某個元素的值getelem(l,i,e)

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

//按元素值查詢locateelem(l,e)

int locateelem(sqlist *l, elemtype e)

//求線性表的長度listlength(l)

int listlength(sqlist *l)

//插入資料元素listinsert(&l,i,e)

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

//初始化線性表initlist(&l)

void initlist(sqlist *&l)

//銷毀線性表 destroy(&l)

void destroylist(sqlist *&l)

main.cpp

#include"list.h"

//實現測試函式

int main()

; 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");

initlist(sq);

listinsert(sq, 1, 5);

listinsert(sq, 2, 3);

listinsert(sq, 1, 4);

displist(sq);

return 0;

}

list.h

#ifndef list_h_included

#define list_h_included

#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)

bool getelem(sqlist *l,int i,elemtype &e);//求線性表中某個資料元素的值

int listlength(sqlist *l);//求線性表的長度listlength(l)

int locateelem(sqlist *l, elemtype e); //按元素值查詢locateelem(l,e)

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

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

void destroylist(sqlist *&l);//銷毀線性表destroy(&l)

#endif // list_h_included

程式執行結果演示:

知識點總結:將測試函式與基本的順序表演算法庫分離開來,更靈活的解決其他實際問題

學習心得:初次學會建立「順序表」演算法庫,並掌握細微觀察方法——單步跟蹤法,學會一步步觀察程式執行的過程,更深一層的理解了程式如何執行

第3周 專案2 建設「順序表」演算法庫

問題描述 採用程式的多檔案組織形式,在專案1的基礎上,建立標頭檔案lish.h 包含定義順序表結構的 巨集定義 要實現演算法的函式的宣告 和原始檔function.cpp 包含實現各種演算法的函式的定義 main.cpp 中的 include list.h int main createlist s...

第3周專案2 建設「順序表」演算法庫

檔名稱 專案2.cbp 作 者 孟琪琪 完成日期 2016年9月16日 版 本 號 v1.0 問題描述 請採用程式的多檔案組織形式,在專案1的基礎上,建立 如上的兩個檔案,另外再建立乙個原始檔,編制main函 數,完成相關的測試工作。輸入描述 無 程式輸出 依據各個函式而定 架構 list.h檔案 ...

第3周專案2 建設「順序表」演算法庫

問題及 檔名稱 2.cpp 作 者 王修文 完成日期 2016年9月17日 版 本 號 v1.0 問題描述 請採用程式的多檔案組織形式,在專案1的基礎上,建立 如上的兩個檔案,另外再建立乙個原始檔,編制main函 數,完成相關的測試工作。輸入描述 無 程式輸出 標頭檔案list.h define m...