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

2021-09-24 18:40:34 字數 1809 閱讀 6271

佇列是一種先進先出(fifo)的資料結構,從隊尾進,從隊頭出

在 fifo 資料結構中,將首先處理新增到佇列中的第乙個元素

如上圖所示,佇列是典型的 fifo 資料結構。插入(insert)操作也稱作入隊(enqueue),新元素始終被新增在佇列的末尾。 刪除(delete)操作也被稱為出隊(dequeue)。 你只能移除第乙個元素

示例 - 佇列

如下圖所示

1.入隊,將6插入

2.出隊,刪除5

為了實現佇列,我們可以使用動態陣列和指向佇列頭部的索引

如上所述,佇列應支援兩種操作:入隊和出隊。入隊會向佇列追加乙個新元素,而出隊會刪除第乙個元素。 所以我們需要乙個索引來指出起點。

class myqueue 

/** insert an element into the queue. return true if the operation is successful. */

public boolean enqueue(int x) ;

/** delete an element from the queue. return true if the operation is successful. */

public boolean dequeue()

p_start++;

return true;

}/** get the front item from the queue. */

public int front()

/** checks whether the queue is empty or not. */

public boolean isempty()

};public class main

q.dequeue();

if (q.isempty() == false)

q.dequeue();

if (q.isempty() == false) }}

上面的實現很簡單,但在某些情況下效率很低。 隨著起始指標的移動,浪費了越來越多的空間。 當我們有空間限制時,這將是難以接受的。

迴圈佇列。 具體來說,我們可以使用固定大小的陣列兩個指標來指示起始位置和結束位置。 目的是重用我們之前提到的被浪費的儲存

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

棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,他的特點在於只能允許在容器的一端 稱為棧頂端指標,英語top 進行加入資料 英語push 和輸出資料 英語pop 的運算。沒有了位置概念,保證任何時候可以訪問 刪除的元素都是此前最後存入的那個元素,確定了一種預設的訪問...

資料結構與演算法 棧和佇列

棧 是限制在表的一端進行插入和刪除運算的線性表。棧又稱後進先出簡稱lifo表 佇列 也是一種運算受限的線性表。它只允許在標的一端進行插入,而在另一端進行刪除。佇列亦稱先進先出fifo表 1.棧與佇列的區別 1 佇列先進先出,棧先進後出。2 對插入和刪除操作的 限定 棧是限定只能在表的一端進行插入和刪...

資料結構與演算法05 棧 佇列

特點在於只能允許在容器的一端 稱為棧頂端指標,英語 top 進行加入資料 英語 push 和輸出資料 英語 pop 的運算。後進先出 lifo,last in first out 棧描述的是操作,線性表描述的是資料存放鍊錶 操作頭部 順序表 操作尾部 return self.list 是不太合適的 ...