iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

堆疊(stack),將資料有序排成一列且具有 後進先出 LIFO(Last In First Out) 的資料結構,通常以一維陣列或鏈結串列的方式呈現,規則是先加入的資料最後才能夠移出來,反之後進入的資料優先出來,可以想像將東西依序收入箱子中後,需要先從最上層的東西開始移動才可以拿到最早放進去的物品。

範例說明 :

題目 : 使用堆疊資料結構,依序放入 { 1, 3, 5, 7} 四個元素,從中拿出兩個元素後,再依序放入

{ 9, 11 } 兩個元素,請問最後結果由上至下的元素依序為何?

Step 1 : 將 { 1, 3, 5, 7} 四個元素依序推入 (Push) 後,由上而下的順序是 { 7, 5, 3, 1 } 四個元素。

Step 2 : 從中依序拿出兩個元素的過程為 { 7, 5 },堆疊中剩餘的元素依序為 { 3, 1 }。

Step 3 : 依序將 { 9, 11 } 兩個元素放入堆疊中,此時堆疊中的元素依序為 { 11, 9, 3, 1 }。

優點 :

  1. 堆疊的推入(Push) 和 移除(Pop) 只發生在一端,時間複雜度為 O(1),所花費的時間較短。
  2. 在遞迴算法或深度優先搜索中,堆疊記錄每一層的狀態,方便函數的移動和返回。

缺點 :

  1. 堆疊的空間是有限的,需要預先定義大小,可能會導致儲存空間的浪費。
  2. 堆疊的操作簡單,功能單一,無法處理較為複雜資料。

參考資料 : 堆疊 - 維基百科


上一篇
Day8 Binary Tree 題目3 : 199. Binary Tree Right Side View
下一篇
Day10 Stack 題目1 : 20. Valid Parentheses
系列文
C++刷題:LeetCode Top 100 Liked30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言