題組內容
一、試說明下列問題:
⑵一般在程式執行副程式呼叫時,通常會使用那種資料結構?(5 分)
詳解 (共 3 筆)
詳解
一般是使用堆疊來實作。最早呼叫的副程式會先置入堆疊。若在程式內有再呼叫其他副程式,會再置入上方的堆疊。執行順序會先完成上方較晚呼叫的副程式,再完成先前呼叫的副程式。
詳解
在程式執行副程式(函數)呼叫時,通常會使用**堆疊(Stack)**資料結構。以下是簡單的說明:
-
堆疊的特性:
- 後進先出(LIFO,Last In First Out):最新放入的元素最先被取出。
- 適合用來管理程式的函數調用和返回過程。
-
函數呼叫過程中的堆疊操作:
- 呼叫函數時:
- 將當前函數的狀態(包括返回地址、局部變數等)保存到堆疊中。
- 創建新的堆疊幀來保存被調用函數的狀態。
- 函數返回時:
- 從堆疊中彈出被調用函數的堆疊幀。
- 恢復之前函數的執行狀態。
- 呼叫函數時:
-
支持遞歸:
- 每次遞歸調用都創建一個新的堆疊幀,保存該調用的狀態。
- 基礎情況(Base Case)達到後,逐層返回,彈出相應的堆疊幀。
詳解
堆疊(Stack)