程式設計基礎(虛擬碼追蹤)
下列程式在以陣列 next 連接的鏈結串列 A → C → E → D → B 中,把 val[6] 的「F」插入到「C」(元素編號3)的正後方,再從元素編號1的元素開始依序走訪並輸出。陣列的元素編號從1開始。next 的值0表示串列的結尾。為使輸出為 A, C, F, E, D, B,【a】應填入下列何者?
字串型陣列: val ← {"A", "B", "C", "D", "E", "F"}
整數型陣列: next ← {3, 0, 5, 2, 4, 0}
【a】
整數型: p ← 1
while (p ≠ 0)
輸出 val[p]
p ← next[p]
endwhile
- Anext[3] ← 6,然後 next[6] ← next[3]
- Bnext[6] ← 3,然後 next[3] ← next[6]
- Cnext[6] ← next[3],然後 next[3] ← 6
查看答案與解析
正確答案:C. next[6] ← next[3],然後 next[3] ← 6
插入時,先讓新元素 F 的下一個指向 C 原本指向的 E(next[3] = 5),再讓 C 的下一個指向 F。next[6] ← next[3] 使 next[6] = 5,接著的 next[3] ← 6 把 C → F → E 連起來。若順序相反,會在 next[3] 改成6之後才執行 next[6] ← next[3],使 next[6] = 6,F 指向自己,輸出 C, F, F, … 而不會結束。重新連接鏈結串列時,要以不遺失通往後續元素路徑的順序指派。
- A. next[6] 變為6,F 指向自己,走訪的處理不會結束。
- B. next[6] = 3、next[3] = 3,C 指向自己,輸出 A, C, C, … 而不會結束。
- C. 正確。先讓 F 的下一個指向 E,再讓 C 的下一個指向 F。