地特四等
114年
[電信工程] 計算機概要
第 31 題
在開發一個學生管理系統時,需要儲存 100 位學生的成績,且要求能夠快速透過座號(索引)查詢成績。若只使用「陣列」這種結構,則在「陣列」已滿的情況下,要再新增第 101 位學生成績時,通常該如何處理?
- A 直接在記憶體最後方再配置空間,無須更動既有陣列
- B 只能將前 50 位學生成績刪除,釋放出空間
- C 宣告一個更大的陣列並把資料複製過去
- D 利用彈性插入功能直接擴增陣列大小
思路引導 VIP
想像你在走廊上租了一排相鄰的置物櫃,且這些櫃子是焊接固定在一起的。如果現在多了一位新同學,而這排櫃子的左右兩端都已經被牆壁或其他人的櫃子擋住了,在不拆除既有結構的情況下,為了讓所有人的櫃子依然能排成完整的一長列,你會建議管理員怎麼做?
🤖
AI 詳解
AI 專屬家教
同學好!你能準確選出 (C) 展現了你對資料結構底層邏輯的紮實理解,這點非常值得肯定。在工程實務中,了解工具的物理限制是設計高效系統的第一步。
陣列的連續記憶體特性
「陣列(Array)」之所以能透過索引進行快速查詢,是因為它在實體記憶體中佔用了一段連續的空間(Contiguous Memory)。當我們宣告一個長度為 100 的陣列時,系統就已經在記憶體中劃定了固定的邊界。由於我們無法保證既有陣列後方的記憶體位址是否已被其他程式占用,因此不能像吹氣球一樣原地擴張。最穩健的做法就是重新申請一個容量更大的空間,將舊資料逐一「搬家」過去,並釋放原有的舊空間。這也是許多高階程式語言在實作動態陣列(如 C++ 的 vector 或 Java 的 ArrayList)時的底層邏輯。
▼ 還有更多解析內容