1.Stack

[概念]
Stack是一種抽象資料結構,其存/取資料的規則為last in first out(LIFO),最後放入的會最先被拿出來。就像一個罐子,只有一個開口,放東西時只能疊到最上面,拿東西時只能先拿最上面的。
借用wiki的圖來解釋就很明白。














最主要支援以下幾種操作
push:推入stack中存放
pop:從stack中拿出
top:告訴我頂端的值
size:目前stack中有多少東西

[實作]
網路上的資料很多,這邊就不贅述了
但最重要的是千萬不要以為stack就只能用array做,雖然上面的圖看起來很像個array,但stack關鍵的是LIFO,但沒有限定做法。
網路上有個圖文並茂的文章,就有分別描述如何用array與link list時做stack。
http://alrightchiu.github.io/SecondRound/stack-yi-arrayyu-linked-listshi-zuo.html

關鍵是
1.記住top是誰: array中用int來記錄top的index,link list中用pointer指向top node
2.維繫相鄰資料間的關聯性: 例如array中資料天生就在記憶體中相鄰不用額外做事,link list中則是用link來建立關聯性。