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

以元素數為5的整數型陣列 st 與整數型變數 top 表示堆疊。st 的元素一開始全為0,top 從0開始。push(v) 先把 top 加1再執行 st[top] ← v,pop() 回傳 st[top] 的值後把 top 減1(不改變 st 的元素)。執行下列程式後 top 與 st 為下列何者?

push(5)
push(8)
pop()
push(3)
push(9)
pop()
push(7)
pop()
  1. Atop = 2, st = {5, 3, 0, 0, 0}
  2. Btop = 2, st = {5, 3, 7, 0, 0}
  3. Ctop = 5, st = {5, 8, 3, 9, 7}
查看答案與解析

正確答案:B. top = 2, st = {5, 3, 7, 0, 0}

push(5)、push(8) 使 st[1] = 5、st[2] = 8、top = 2,pop() 回傳8而 top = 1。push(3) 以3覆寫 st[2],push(9) 使 st[3] = 9,pop() 使 top 回到2。push(7) 以7覆寫 st[3],最後的 pop() 使 top = 2。pop() 只減少 top,因此取出的7仍留在 st[3],st = {5, 3, 7, 0, 0}。堆疊中有效的內容是 st[1]〜st[top] 的5與3。

  • A. 這是以為 pop() 會把元素清為0時的內容。pop() 只減少 top。
  • B. 正確。top = 2,取出的7仍留在 st[3]。
  • C. 這是以為 pop() 不減少 top、每次 push 都加在後面時的內容。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 有一個把元素數為4的字串型陣列 q 環狀使用的佇列。head 與 tail 的初值為1,enq(v) 執行 q[tail] ← v 後再執行 tail ← tail mod 4 + 1,deq() 回傳 q[head] 的值後執行 head ← head mod 4 + 1。執行下列程式時,「E」會存放在 q 的哪個元素?
  2. 下列程式從元素編號1的元素開始,依序走訪以陣列 next 連接元素的鏈結串列並輸出。陣列的元素編號從1開始。next 的值0表示串列的結尾。輸出的值的順序為下列何者?
  3. 下列程式在以陣列 next 連接的鏈結串列 A → C → E → D → B 中,把 val[6] 的「F」插入到「C」(元素編號3)的正後方,再從元素編號1的元素開始依序走訪並輸出。陣列的元素編號從1開始。next 的值0表示串列的結尾。為使輸出為 A, C, F, E, D, B,【a】應填入下列何者?
  4. 下列 for 迴圈每次讓控制變數增加5。執行後 c 的值為下列何者?
  5. 下列程式的 and 在左側的式子為 false 時不評估右側的式子(短路求值)。cnt 是全域變數。執行後 cnt 的值為下列何者?