📍 基本觀念
一群由相同性質的元素所組成,有先進後出、後進先出的特性(First-in-Last-out, FILO)。
用 Top(指標)來表示堆疊的狀態。
就好像放在箱子裡的書本,只能從最上面開始取出。

📍 堆疊的應用
-
函數呼叫 (副程式呼叫與返回)
-
遞迴程式呼叫與返回
-
資料反序輸出 (abc → cba)
-
中斷處理
-
二元樹追蹤
-
巨集呼叫
-
多元處理
-
圖形的深度搜尋
-
運算式之轉換與求值
-
自助餐取盤行為
副程式呼叫與返回
利用堆疊後進先出的特性,來解決副程式呼叫問題

call function 時的堆疊過程
- 當開始編譯main的時候,編譯器會向記憶體要一段空間,並且生成一個堆疊,並把main這個的記憶體位置當作堆疊的第一個item push到堆疊中,此時堆疊top=0。
- 當main程式call 到第一個 sub-function 1 時,會把 sub-function 1 的記憶體位置push到堆疊裡面,此時堆疊top=1
- 當sub function 1 call 到第二個 sub-function 2 時,會把 sub-function 2 的記憶體位置push到堆疊裡面,此時堆疊top=2