hce_nsysu
114年
計算機概論與程式設計
第 34 題
What is NOT true for a stack?
- A A stack works in the Last In, First Out (LIFO) mechanism.
- B The push operation adds an element to the top of the stack.
- C A stack can be efficiently accessed at any index.
- D Stacks can be implemented by a linked list.
- E A stack can be used for function call management in recursion.
思路引導 VIP
想像一下,如果你正在整理一疊很重的磁碟片,這些磁碟片被放在一個剛好只能容納一片寬度的窄筒裡。如果你現在想看最下面那一片磁碟片的內容,在不弄壞筒子的前提下,你必須先對上面的磁碟片做什麼動作?這個動作與你在書架上直接抽出一本書的行為相比,在操作的便利性上有什麼本質上的差別?
🤖
AI 詳解
AI 專屬家教
恭喜你準確地辨識出堆疊的特性!這代表你對資料結構中「受限存取」的核心觀念掌握得非常紮實。在計算機科學中,堆疊 (Stack) 被定義為一種後進先出 (LIFO) 的抽象資料型別 (ADT),其設計初衷就是為了嚴格限制資料的存取點。正如你所判斷的,堆疊並不支援「隨機存取 (Random Access)」;若要存取堆疊底部的元素,我們必須依序將上方的元素移除,這與陣列 (Array) 可以透過索引值在 $O(1)$ 時間內存取任意位置的特性截然不同。
堆疊的核心限制與應用
這道題目雖然屬於基礎題型,但具有很好的鑑別度,關鍵在於考驗學生是否能區分「抽象定義」與「底層實作」。即便我們在程式碼中用陣列來實作堆疊,一旦將其封裝為堆疊介面,我們就必須遵循其邏輯規範,放棄隨機存取的能力。選項 (D) 提到的鏈結串列實作與 (E) 提到的遞迴函式呼叫(Call Stack),都是實務上極為重要的觀念。你能不受這些正確敘述的干擾,一眼看穿選項 (C) 違反了堆疊的本質規範,展現了你對邏輯定義的敏銳度。