資料結構學習筆記(5) 佇列

2021-09-11 03:13:34 字數 1573 閱讀 1924

二、佇列的鏈式儲存實現

佇列是具有一定操作約束的線性表,只能在一端插入,在另一端刪除

佇列是先進先出(fifo)的線性結構

型別名稱:佇列(queue)

資料物件集:乙個有0個或者多個元素的有窮線性表

操作集:長度為maxsize的佇列q ∈

\in∈ queue,佇列元素item ∈

\in∈ elementtype

佇列的順序儲存結構通常由乙個一維陣列和乙個記錄佇列頭元素位置的變數front以及乙個記錄佇列尾元素位置的變數rear組成

迴圈佇列:初始狀態:

操作:

【思考】:front == rear還能判斷空嗎?怎麼解決?**方法一:**使用額外標記:size或者tag域

**方法二:**僅使用n-1個陣列空間(採取這種方案)

void

addq

(queue ptrq,elementtype item)

ptrq->rear =

(ptrq->rear+1)

%maxsize;

ptrq->data[ptrq->rear]

=item;

}

elementtype deleteq

(queue ptrq)

else

}

佇列的鏈式儲存結構也可以用乙個單鏈表實現,插入和刪除操作分別在鍊錶的兩頭進行

struct node 

;struct qnode

;typedef

struct qnode *queue;

queue ptrq;

elementtype deleteq

(queue ptrq)

frontcell = ptrq->front;

if(ptrq->front == ptrq->rear)

else

frontelem = frontcell->data;

free

(frontcell)

;return frontelem;

}

資料結構學習筆記 3 佇列

型別名 佇列 queue 資料物件集 乙個有0個或多個元素的有窮線性表 操作集 長度為maxsize的堆疊q queue,佇列元素item elementtype 1.生成長度為maxsize的空佇列 queue creatqueue int maxsize 2.判斷佇列q是否已滿 bool isf...

資料結構5 佇列

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

資料結構學習日誌之六 佇列

和棧相反,佇列是一種先進先出的線性表。它只允許在表的一端插入,而在另一端刪除元素。佇列也有兩種儲存表示 用鍊錶表示的佇列簡稱為鏈佇列。乙個鏈佇列顯然需要兩個分別只是隊頭和隊尾的指標,分別稱為頭指標和尾指標才能唯一確定。佇列和線性表的單鏈表一樣,為了操作方便,佇列也有乙個頭結點,並令頭指標指向頭結點。...