第四周實踐專案2 建立單鏈表演算法庫

2021-07-05 14:39:28 字數 3689 閱讀 1955

/* 

*檔名稱:專案2.cbp

*作 者:劉晨筱

*完成日期:10月5號

*版 本 號:v1.0

* *問題描述:按照「0207將演算法變程式」部分建議的方法,建設自己的專業基礎設施演算法庫。這一周,建的是單鏈表的演算法庫。

演算法庫包括兩個檔案:

標頭檔案:linklist.h,包含定義順序表資料結構的**、巨集定義、要實現演算法的函式的宣告;

原始檔:linklist.cpp,包含實現各種演算法的函式的定義

請採用程式的多檔案組織形式,建立如上的兩個檔案,另外再建立乙個原始檔(如main.cpp),編制main函式,完成相關的測試工作。

*輸入描述:無

*程式輸出:按教材實驗題2.2要求的輸出

*/

架構:

linklist.h 標頭檔案**#ifndef linklist_h_included

#define linklist_h_included

#include #include typedef int elemtype; //char型別 運用typedef方便快捷

typedef struct lnode //定義單鏈表結點型別

linklist;

void createlistf(linklist *&l,elemtype a,int n);//頭插法建立單鏈表

void createlistr(linklist *&l,elemtype a,int n);//尾插法建立單鏈表

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

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

bool listempty(linklist *l); //判斷線性表是否為空

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

void displist(linklist *l); //輸出線性表

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

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

bool listinsert(linklist *&l,int i,elemtype e); //插入資料元素

bool listdelete(linklist *&l,int i,elemtype &e); //刪除資料元素

#endif // linklist_h_included

link.cpp檔案**
#include "linklist.h"

void createlistf(linklist *&l,elemtype a,int n)//頭插法建立單鏈表

}void createlistr(linklist *&l,elemtype a,int n)//尾插法建立單鏈表

r->next=null; //終端結點next域置為null

}void initlist(linklist *&l)

void destroylist(linklist *&l)

free(p); //此時q為null,p指向尾結點,釋放它

}bool listempty(linklist *l)

int listlength(linklist *l)

return(i);

}void displist(linklist *l)

printf("\n");

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

if (p==null) //不存在第i個資料結點

return false;

else //存在第i個資料結點

}int locateelem(linklist *l,elemtype e)

if (p==null)

return(0);

else

return(n);

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

if (p==null) //未找到位序為i-1的結點

return false;

else //找到位序為i-1的結點*p

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

if (p==null) //未找到位序為i-1的結點

return false;

else //找到位序為i-1的結點*p

}

main。cpp 檔案**
#include "linklist.h"

int main()

;//注意字元的輸出 %c 還有'a'

//尾插法插入字元

createlistr(h, a, 5);

//輸出單鏈表h

displist(h);

//輸出單鏈表長度

printf("鍊錶長度:%d\n",listlength(h));

//判斷空表

if((listempty(h))>0)

printf("是空表\n");

else

printf("不是空表\n");

//輸出指定元素

if(getelem(h, 3, e))

printf("找到了第3個元素值為:%c\n", e);

else

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

//查詢元素位址

if((k=locateelem(h, 'a'))>0)

printf("找到了,值為a的元素是第 %d 個\n", k);

else

printf("值為1的元素木有找到!\n");

//插入元素

printf("在第1個位置插入元素f\n");

listinsert(h, 4, 'f');

//輸出單鏈表h

displist(h);

//刪除元素

printf("刪除第3個位置的元素\n");

listdelete(h,3,e);

//輸出單鏈表h

displist(h);

//銷毀單鏈表

printf("銷毀單鏈表\n");

學習心得:

編輯這篇部落格,最大的收穫是對codeblocks的運用多了解了一些。熟即多練才能生巧!加油!

第四周實踐專案1 建立單鏈表

問題及 檔名稱 第四周實踐專案1 作 者 劉晨筱 完成日期 2015年9月21日 版 本 號 v1.0 問題描述 定義單鏈表儲存結構,用頭插法和尾插法建立單鏈表。輸入描述 無 程式輸出 建立好以後的結果 include include typedef int elemtype typedef str...

第四周 建立單鏈表

all right reserved.date 2015年9月21日 版本 v1.0.1 作業系統 xp 執行環境 vc6.0 問題描述 定義單鏈表儲存結構,用頭插法和尾插法建立單鏈表,並顯示建立好後的結果。include include typedef int elemtype typedef s...

第四周 建立單鏈表演算法庫

1 建立標頭檔案 ifndef linklist h included define linklist h included typedef int elemtype typedef struct lnode 定義單鏈表結點型別 linklist void createlistf linklist ...