Stack(堆疊)是一種後進先出(LIFO)的資料結構
看一下圖
註:圖源
你可以想像一下在廚房洗碗,盤子在洗手臺堆起來,你一定是從最上面開始開,不會從最底。
或者是瀏覽器回到上一頁的功能,愈近的記錄會愈早讀到,生活中還有滿多stack的應用~
Stack觀念跟程式都不難,以下來實作一下
這邊會用slice來做,push資料的時候append到slice裡面,pop的時候取slice最後的值就可以了。
程式:
type Stack struct {
nodes []int
}
func (s *Stack) Push(val int) {
s.nodes = append(s.nodes, val)
}
func (s *Stack) Pop() int {
if len(s.nodes) == 0 {
return 0
}
res := s.nodes[len(s.nodes)-1]
s.nodes = s.nodes[0 : len(s.nodes)-1]
return res
}
學完了,明天就來寫leetcode XD~