第7周專案2 建立鏈隊演算法庫

2021-07-05 21:19:21 字數 1955 閱讀 9984

問題:

/*

檔名稱:專案2.cbp

作    者:王聰

完成日期:2023年10月15日

版 本 號:v1.0

問題描述:定義鏈佇列儲存結構,實現其基本運算,並完成測試。

輸入描述:無

程式輸出:測試資料

*/

架構:

typedef struct qnode //資料節點

qnode;

typedef struct //鏈隊節點

liqueue;

void initqueue(liqueue *&q); //初始化鏈隊

void destroyqueue(liqueue *&q); //銷毀鏈隊

bool queueempty(liqueue *q); //判斷鏈隊是否為空

int  queuelength(liqueue *q);   //返回佇列中元素個數,也稱佇列長度

void enqueue(liqueue *&q,elemtype e);   //進隊

bool dequeue(liqueue *&q,elemtype &e);  //出隊

#endif // sqqueue_h_included

liqueue.h是鏈隊的乙個演算法庫集合,裡面宣告了常用到的各個功能函式。 

//鏈隊基本運算函式

#include "liqueue.h"

void initqueue(liqueue *&q)  //初始化鏈隊

void destroyqueue(liqueue *&q)  //銷毀鏈隊

}free(p);

free(q);                //釋放鏈隊節點占用空間

}bool queueempty(liqueue *q)  //判斷鏈隊是否為空

int queuelength(liqueue *q)  //返回佇列中資料元素個數

return(n);

}void enqueue(liqueue *&q,elemtype e)  //入隊

}bool dequeue(liqueue *&q,elemtype &e)   //出隊

liqueue.cpp對應liqueue.h中宣告的各個功能函式,給出了各個功能函式的實現方法。

#include "liqueue.h"

int main()

printf("\n");

printf("(9)釋放佇列\n");

destroyqueue(q);

return 0;

}

main.cpp中根據需要新增各個函式,以便實現相應功能

執行結果:

知識點總結:

在順序佇列的基礎上定義鏈隊演算法庫要理解鍊錶與順序表的區別來對其中相應函式的修改。

學習心得:

鏈隊的隊空判斷條件和順序佇列有區別,只要判斷頭指標和尾指標是否為空就可以了。

鏈隊這一鏈式結構的體現使它不必判斷佇列是否滿。

進隊的實現是將節點插入到單鏈表表尾。

出隊的實現是刪除單鏈表中首個資料節點。

好好理解這兩種佇列建立方法的優缺點對以後我們選擇有幫助。

第7周 專案2 建立鏈隊演算法庫

1.標頭檔案 liqueue.h,包含定義鏈隊資料結構的 巨集定義 要實現演算法的函式的宣告 typedef char elemtype typedef struct qnode qnode 鏈隊資料結點型別定義 typedef struct liqueue 鏈隊型別定義 void initqueu...

第7周專案2 建立鏈隊演算法庫

檔名稱 h1.cpp 完成日期 2015年10月13日 版本號 code block 問題描述 定義佇列的鏈式儲存結構,實現其基本運算,並完成測試。輸入描述 無 程式輸出 隊表的結果 include include typedef char elemtype typedef struct qnode...

第7周 專案2 建立鏈隊演算法庫

檔名稱 www.cpp 作 者 董子賓 完成日期 2015年 10月 16日 版 本 號 v1.0 問題描述 建立和測試鏈隊演算法庫 輸入描述 無 程式輸出 測試函式的結果 問題及 1.標頭檔案 liqueue.h,包含定義鏈隊資料結構的 巨集定義 要實現演算法的函式的宣告 ifndef lique...