前言:
我們生活中排隊模型的特點是,最早進入隊伍的元素最早離開。本節提出佇列來描述類似排隊的結構模型。
目錄:1、棧
2、棧的應用舉例
3、棧與遞迴的實現
4、佇列
5、離散事件模型
正文:佇列的定義:
和棧相反,佇列(queue)是一種先進先出(first in first out, fifo)的線性表。它只允許在表的一端進行插入,而在另一端刪除元素。在佇列中,允許插入的一端就做隊尾(rear),允許刪除的一端稱為隊頭(front)。
雙端佇列:
雙端佇列是限定插入和刪除操作在表的兩端進行的線性表。(一種限制性的資料結構)
佇列的鏈式表示和實現:
用鍊錶表示的佇列簡稱為 鏈佇列 。乙個鏈佇列顯然需要兩個分別指向隊頭 和 隊尾 的指標(分別稱為頭指標 和 尾指標)。這裡和單鏈表一樣,為了方便也給佇列新增乙個頭結點。
佇列示意圖:
單鏈佇列的儲存結構:
//結點定義
typedef struct qnodeqnode;
//佇列鏈定義
typedef structlinkqueue;
**實現:
#include#include執行結果:#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
//status是函式的型別,其值是函式結果狀態碼
typedef int
status;
typedef
intelemtype;
//結點定義
typedef struct
qnodeqnode;
//佇列鏈定義
typedef struct
linkqueue;
//初始化乙個空佇列
status initqueue(linkqueue &q)
//判斷是否為空佇列
status queueempty(linkqueue &q)
//判斷長度
status queuelength(linkqueue &q)
returni;}
//向佇列尾部插入元素e
status enqueue(linkqueue &q,elemtype e)
//刪除佇列頭部元素並返回
status dequeue(linkqueue &q,elemtype &e)
void printv(linkqueue &q)
}void
main()
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1 1棧是限定僅在表尾進行插入和刪除操作的線性表。棧中元素具有線性關係和後進先出的特性。2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。3棧的儲存結構分兩種,一種是順序儲存結構...
第三章 棧和佇列
第三章棧和佇列 一 棧1.棧 限定僅在表尾進行插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 另一端稱為棧底 2.空棧 不含任何資料元素的棧。3.在任何時候出棧的元素都只能是棧頂元素,即最後入棧者最先出棧,具有後進先出的特性。4.棧的抽象資料型別定義 1 push 輸入 元素值 x 輸出 如果...