iT邦幫忙

2021 iThome 鐵人賽

DAY 5
1

聊聊堆疊(Stack)

堆疊是一種後進先出(Last In First Out)(LIFO)的資料結構,換句話說,堆疊就是將數據排成一列,由下往上堆放文件,只能從最新添加的數據開始存取。好處是,隨時都能存取最新數據。堆疊與佇列常放在一起討論,不過在此處,我們著重於堆疊的了解,明天再來看佇列的特性。

堆疊的操作

根據堆疊後進先出的特性,進行兩種的操作:

  1. push:將資料放入堆疊頂端
  2. pop:將堆疊頂端資料移除

這邊有個小提醒,堆疊是線性結構,在操作上的時間複雜度為O(1)

這邊以餐盤做比喻,在一碟餐盤中,若要使用一個餐盤,會先拿取最上面,再依序往下拿取,以這種方式會更容易理解堆疊。

堆疊可以用陣列與連結串列的方式操作

我們先以Python程式碼簡單的理解堆疊的概念,使用append(添加)以及pop(移除)進行操作,每一次添加及刪除都以最後一組開始(後進先出)。

Python

x是空列表
x = []

#append:添加
x.append("red")
print(x) #輸出結果:['red']
x.append("green")
print(x) #輸出結果:['red', 'green']
x.append("blue")
print(x) #輸出結果:['red', 'green', 'blue']

#pop:移除
x.pop()
print(x) #輸出結果:['red', 'green']
x.pop()
print(x) #輸出結果:['red']
x.pop()
print(x) #輸出結果:[]

JacaScript

var stack = []

stack.push(1);
console.log(stack); // [1]

stack.push(2);
console.log(stack); // [1,2]

stack.push(3);
console.log(stack); // [1,2,3]


console.log(stack.pop()); //  3
console.log(stack); // [1,2];

console.log(stack.pop()); //  2
console.log(stack); // [1];

console.log(stack.pop()); //  1
console.log(stack); // []; -> empty

上一篇
Day04:資料結構 - 陣列(Array)
下一篇
Day06:資料結構 - 佇列(queue)
系列文
一個月的演算法挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言