堆疊是資料結構的一種,將數據排成一列,可以把它想像在疊積木,資料不斷往上堆疊,每次取出資料時,只能從最上方的資料開始拿起
Last in First out
,簡稱 LIFO
index
(圖片取自於Stacks & Queues)
Action動作 | 平均 | 最壞 |
---|---|---|
訪問(Access) | ||
搜尋(Search) | ||
插入(Insertion) | ||
刪除(Deletion) |
空間複雜度隨著 Stack
中元素的數量線性增長
我們可以利用js array
達成stack
效果,利用push
新增資料在末端,要取出資料使用pop
方法即可
以下利用物件導向實作
Node
Stack
新增頭跟尾
Stack
新增push
方法將物件插入 Stack 的頂端。
(圖片來自於visualgo)
newNode
並將其初始化為 value
。head
和 tail
都指向新的節點head
指向新的節點,並將新的節點的 next
屬性指向舊的 head
(即舊的頂端)。stack
長度加一Stack
新增pop
方法移除並傳回在
Stack
頂端的物件。
(圖片來自於visualgo)
null
1
,則將 head
和 tail
都設置為 null
,並將列表長度設置為 0
,最後返回被移除的節點Stack
新增peek
方法傳回 Stack 頂端的物件而不需移除它。
(圖片來自於visualgo)
head
是否為空,如果是,則返回 null
head
的值給定一個僅包含字符 '('
、')'
、'{'
、'}'
、'['
和 ']'
的字符串 s,確定輸入字符串是否有效。
如果滿足以下條件,則輸入字符串有效:
opened
和closed
被定義為分別表示左括號和右括號。 然後將字符串 s
轉換為稱為 sarray
的字符數組,並使用for
循環遍歷sarray
。opened
數組中的相應索引推送到stack
數組中stack
不為空,則檢查stack
數組的最後一個元素,看它是否等於closed
數組中的相應索引stack
數組的最後一個元素pop
出來(因為已找到匹配的括號並且可以將其刪除)false
true
表示有效,否則反之@joe94113Tue, Feb 5, 2023 10:00 PM