佇列是一種先進先出(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 是不太合適的 ...