C語言 資料結構 佇列

2021-10-16 09:12:38 字數 562 閱讀 7434

佇列也是一組元素的集合,也提供兩種基本操作:enqueue(入隊)將元素新增到隊尾,dequeue(出隊)從隊頭取出元素並返回。就像排隊買票一樣,先來先服務,先入隊的人也是先出隊的,這種方式稱為fifo(first in first out,先進先出),有時候佇列本身也被稱為fifo。

棧操作的top指標在push時增大而在pop時減小,棧空間是可以重複利用的,而佇列的head、tail指標都在一直增大,雖然前面的元素已經出隊了,但它所佔的儲存空間卻不能重複利用。

一般情況下出隊的元素就不再有儲存價值了,這些元素的儲存空間應該**利用,由此想到把佇列改造成環形佇列(circular queue):把queue陣列想像成乙個圈,head和tail指標仍然是一直增大的,當指到陣列末尾時就自動回到陣列開頭,就像兩個人圍著操場賽跑,沿著它們跑的方向看,從head到tail之間是佇列的有效元素,從tail到head之間是空的儲存位置,如果head追上tail就表示佇列空了,如果tail追上head就表示佇列的儲存空間滿了。如下圖所示:

C語言 資料結構 佇列

1 佇列簡介 佇列是一種特殊的線性表,它只允許在表的前端進行刪除操作,而在表的後端進行插入操作,進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。2 佇列的聲名 和棧不同,我將鍊錶中的每個元素新增上頭指標與尾指標 還有乙個計數器,判空時可以直接拿來用 將其變成乙個佇列...

資料結構(C語言) 佇列

二 佇列的儲存實現及運算實現 佇列也是一種運算受限的線性表。1 佇列的定義 假設有乙個佇列q a1 an 佇列中元素按 a1 an 的次序入隊後,入隊的第乙個元素a1為隊頭元素,最後乙個元素an為隊尾元素,佇列的操作是按先進先出的原則進行的,這種先進先出的規則應用在資料結構中稱為佇列,佇列又稱為先進...

C語言資料結構 鏈佇列

鏈佇列與鍊錶相似,不同的是它具有對列的運算方法,儲存結構和鍊錶相同,下面是其結構示意圖 這裡的 q類似於鍊錶的頭節點 head 它包含兩個指向佇列節點的指標front和rear 當front和rear都為 時隊列為空 front指向佇列第乙個節點,rear指向最後乙個節點,當兩者指向同乙個節點說明佇...