用順序和鏈式實現了線性表,這次要用順序和鏈式實現佇列了。
佇列:只允許在一端進行插入操作,而另一端進行刪除操作的線性表。
允許插入(入隊、進隊)的一端稱為隊尾,允許刪除(出隊)的一端稱為隊頭。
佇列的操作特性:先進先出
順序佇列——佇列的順序儲存結構
假溢位:當元素被插入到陣列中下標最大的位置上之後,佇列的空間就用盡了,儘管此時陣列的低端還有空閒空間。
解決:迴圈佇列:將儲存佇列的陣列頭尾相接。
不存在物理的迴圈結構,用軟體方法實現。
求模:rear=(rear+1)% maxsize front=(front+1) % mazsize隊空:front= =rear
隊滿的條件:
方法一:附設乙個儲存佇列中元素個數的變數num,當num=0時隊空,當num=queuesize時為隊滿;
方法二:修改隊滿條件,浪費乙個元素空間,隊滿時陣列中只有乙個空閒單元;
方法三:設定標誌flag,當front=rear且flag=0時為隊空,當front=rear且flag=1時為隊滿。
浪費乙個空間隊滿:(rear+1) %queuesize==front
//迴圈佇列類的宣告:
struct node
;const
int queuesize=
100;
template
<
class
t>
class
cirqueue
; private
: t data[queuesize]
;int front, rear;};
//入隊
template
<
class
t>
void cirqueue
::enqueue
(t x)
//出隊
template
<
class
t>
t cirqueue
::dequeue()
//取隊首
template
<
class
t>
t cirqueue
::getqueue()
//長度
template
<
class
t>
int cirqueue
::getlength()
佇列長度
鏈佇列——佇列的鏈結儲存結構
//鏈佇列類的宣告
struct node
;template
<
class
t>
class
linkqueue
;template
<
class
t>
linkqueue
::linkqueue()
//入隊
template
<
class
t>
void linkqueue
::enqueue
(t x)
//出隊
資料結構 佇列總結
一.何為佇列?在資料結構中,在有序列表中資料的輸入輸出分別是由不同埠處理的,輸出端稱為前端,輸入端稱為後端,這樣會使得先進入的資料先被取出,即它具有先進先出的特性。二.佇列都分為那幾類?我們最常見的佇列有 順序佇列,迴圈佇列,鏈佇列以及雙向佇列 不過,我們除了必須掌握這幾種常見佇列也要對不常見的佇列...
資料結構之佇列總結
佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。迴圈佇列是把佇列頭尾相接的順序儲存結構。通用計算佇列長度的公式 rear front max s...
含淚總結篇 資料結構 佇列
系列文章 什麼是資料結構?什麼是演算法?資料結構 陣列 資料結構 鍊錶 資料結構 棧 資料結構 佇列 資料結構 排序 優勢 陣列或鍊錶暴露了太多的操作介面,不適合特點的場景下的安全和可控情況。實現 用陣列實現的佇列 public class arrayqueue 入隊操作,將 item 放入隊尾 p...