基礎資料結構和演算法 5 佇列

2021-10-06 07:25:36 字數 2115 閱讀 3888

1. 佇列是什麼?

佇列是一種只能從表的一端存資料另一端取資料且遵循fifo(先進先出)原則的線性儲存結構。

通常只會對佇列執行以下兩種操作:

資料元素進佇列的過程稱為 「入隊」

出佇列的過程稱為 「出隊」。

佇列與棧的比較

2. 佇列怎麼用?

佇列一般用來處理與等待相關的處理。

3. 佇列怎麼實現?

考慮到每次出隊和入隊都要移動隊首和隊尾指標。若採用順序儲存,將會有可能造成順序表前段部分儲存單元的浪費。雖說可以採用迴圈佇列的方式復用儲存單元,若遇到佇列滿的情況,將佇列擴容比較麻煩。因此建議用鍊錶的方式實現佇列。

3.1 定義結構

3.2 定義操作

建立佇列

queue queue_create()

;

訪問隊首元素

linknode*

queue_front

(queue* queue)

;

入隊

void

queue_push

(queue* queue,queuetype element)

;

出隊

void

queue_pop

(queue* queue)

;

#include

"queue.h"

#include

#include

#include

#ifdef que

//建立

queue queue_create()

;return que;

}//銷毀

void

queue_destroy

(queue* que)

//入隊

void

queue_push

(queue* que,queuetype val)

//出隊

void

queue_pop

(queue* que)

//獲取隊首元素

queuetype queue_front

(queue* que)

//判空

bool

queue_empty

(queue* que)

#endif

#ifdef link

//建立

queue queue_create()

;return que;

}//銷毀

void

queue_destroy

(queue* que)

/* que->head = null;

que->tail = null;

*/memset

(que,0,

sizeof

(queue));

}//入隊

void

queue_push

(queue* que,queuetype val)

//出隊

void

queue_pop

(queue* que)

free

(del);}

//獲取隊首元素

queuetype queue_front

(queue* que)

//判空

bool

queue_empty

(queue* que)

#endif

兩個棧實現乙個佇列

兩個佇列實現乙個棧

資料結構5 佇列

5.1簡介 佇列 queue 和堆疊一樣是一種有序鍊錶,屬於抽象資料型別。不同在於是先進先出 first in,first out,fifo 堆疊只需要乙個top指標指向堆疊頂端即可,但是佇列必須使用front和rear兩個指標分別指向佇列的前端和尾端。基本操作 1 create 建立空佇列 2 a...

資料結構與演算法(13) 佇列

定義 佇列是一種只能在一端插入 隊尾 在另一端刪除 隊首 的有序線性表。佇列的第乙個插入的元素也是第乙個被刪除的元素。所以,佇列是一種先進先出 fifo,first in first out 或後進後出 lilo,last in last out 線性表。佇列操作的專有名稱 向佇列中插入乙個元素,稱...

資料結構與演算法 6 佇列

引導 今天我們進入最後一章資料結構的學習 佇列。通過前面幾篇的學習,我們已經了解到了陣列,鍊錶,棧等資料結構。資料結構就是堆特定問題進行抽象話的東西,內容並不多。後面就開始介紹利用這些基礎的資料結構加上演算法來解決特定的問題。佇列佇列和棧都是抽象的資料結構,是乙個操作受限的線性表。它的特點就是先進先...