佇列式資料結構的一種,類似堆疊,但佇列是在頭尾兩端最新增和刪除,數據就像在排隊,在隊伍中最晚到的人排在最後面,先到的人則優先處理(如下圖所示)。
佇列的幾個重點:
First In First Out
縮寫為 FIFO
index
queue
,Dequeue指的是從queue
移除東西
(圖片來自於Queues)
我們可以利用Array
的方法模擬Queue
,利用push
模擬新客人來排隊,利用shift
模擬最前面的客人已處理完成離開了。
queue
Node
節點有值以及可以知道他的下一個節點是誰
Queue
我們能知道他頭尾的節點以及長度為何
將新的值加到尾端
(圖片來自於visualgo)
Queue
長度加一將最前端的值移出
(圖片來自於visualgo)
head
為空則回傳null
queue
長度為一則將head
移除並回傳,並將頭尾及長度設為空queue
長度大於一,則將head
指向head
的下一個,並將原先的head
移出回傳,queue
長度減一返回第一個的值,可以把它想像成最早排隊的
(圖片來自於visualgo)
head
存在則回傳null
Action動作 | 平均 | 最壞 |
---|---|---|
訪問(Access) | ||
搜尋(Search) | ||
插入(Insertion) | ||
刪除(Deletion) |
232. Implement Queue using Stacks
僅使用兩個堆疊實現先進先出 (FIFO)
佇列。實現的佇列應該支持普通佇列的所有功能(push、peek、pop和empty)
。
push(x)
- 將一個元素推x
到佇列的後面。pop()
- 從佇列的前面移除並返回元素。它通過首先將所有元素從轉移queue
到queue2
,從queue2
彈出元素,然後將所有元素轉移回queue
。peek()
- 返回佇列前面的元素而不刪除它。它首先將所有元素從轉移queue
到queue2
,檢索最後一個元素queue2
,然後將所有元素轉移回queue
。empty()
- 如果佇列為空則返回,false
否則返回。@joe94113Tue, Feb 7, 2023 10:00 PM