程式設計基礎(虛擬碼追蹤)

下列程式在以陣列 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
  1. Anext[3] ← 6,然後 next[6] ← next[3]
  2. Bnext[6] ← 3,然後 next[3] ← next[6]
  3. 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。
練習這個領域 前往領域頁面

相關計算工具

程式設計基礎(虛擬碼追蹤)的其他題目

  1. 下列 for 迴圈每次讓控制變數增加5。執行後 c 的值為下列何者?
  2. 下列程式的 and 在左側的式子為 false 時不評估右側的式子(短路求值)。cnt 是全域變數。執行後 cnt 的值為下列何者?
  3. 下列程式在元素數為 n 的陣列 a 中尋找值 x,並把找到的元素編號求到 i。陣列的元素編號從1開始。and 與 or 在只看左側的式子就能決定結果時,不評估右側的式子。【a】中填入的條件式中,在 x 不在 a 中時會參照到範圍外 a[n + 1] 的是下列何者?
  4. 實數型的值以 IEEE 754 雙精度(binary64)表示,加法的結果捨入為最接近的可表示值。執行下列程式後 c 的值為下列何者?
  5. 類別 Counter 的每個實例各有一個整數型成員變數 count(建立時為0),方法 inc() 會將自己的 count 加1。執行下列程式後 x 的值為下列何者?