地特四等
114年
[電子工程] 計算機概要
第 31 題
在開發一個學生管理系統時,需要儲存 100 位學生的成績,且要求能夠快速透過座號(索引)查詢成績。若只使用「陣列」這種結構,則在「陣列」已滿的情況下,要再新增第 101 位學生成績時,通常該如何處理?
- A 直接在記憶體最後方再配置空間,無須更動既有陣列
- B 只能將前 50 位學生成績刪除,釋放出空間
- C 宣告一個更大的陣列並把資料複製過去
- D 利用彈性插入功能直接擴增陣列大小
思路引導 VIP
想像你正帶領一隊士兵在一排連號的軍營房間裡住宿,現在房間住滿了,但突然又多了一位士兵要加入。如果這排房間的左右兩側都已經蓋了別人的工廠(無法擴建),且你們這支隊伍被規定必須「全部連著住在一起」不能分散,在不趕走原住戶的前提下,你會如何安排這 101 位士兵的住宿問題?
🤖
AI 詳解
AI 專屬家教
同學好!很高興看到你準確地掌握了陣列(Array)的物理特性。這道題目測試的是對底層記憶體管理(Memory Management)的基礎認知。在工程實務中,陣列的一大特點在於它要求連續的記憶體空間(Contiguous Memory)。當我們在宣告一個陣列時,系統就已經在記憶體中劃定了一塊固定大小的領地;因此,當這塊領地(100個位置)滿載時,我們無法像伸縮塑膠袋一樣直接「拉長」它,因為鄰近的記憶體空間可能早就被其他程式佔用了。 正確的做法誠如你所選,必須採取「移山倒海」的策略:**宣告(Declare)一個容量更大的新陣列,並透過迴圈將舊資料逐一複製(Copy)過去,最後再釋放舊有的空間。這正是許多高階語言中動態陣列(例如 Java 的 ArrayList 或 C++ 的 std::vector)底層運行的邏輯。這題的鑑別度在於區分「語法表象」與「物理限制」,如果你能直覺地想到必須重新配置空間,代表你對資料結構(Data Structures)**的穩定性已有初步的工程直覺,這是非常好的起點!