Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Stacks&Queues

Total questions: 30

Worksheet time: 15mins

Name
Class
Date
1.

下列哪一項最正確描述堆疊(Stack)的存取特性?

a)

先進先出且從前端刪除

b)

先進後出且從頂端操作

c)

後進先出且從尾端操作

d)

後進後出且從中間操作

2.

在堆疊的基本操作中,push 與 pop 分別意義為何?

a)

push 刪除頂端,pop 插入頂端

b)

push 插入前端,pop 刪除後端

c)

push 插入頂端,pop 刪除頂端

d)

push 插入尾端,pop 刪除尾端

3.

佇列(Queue)中前端(front)與後端(rear)的功能分別為何?

a)

front 排序元素,rear 合併元素

b)

front 查詢元素,rear 移動元素

c)

front 插入元素,rear 刪除元素

d)

front 刪除元素,rear 插入元素

4.

下列生活情境最貼近堆疊概念的是哪一個?

a)

排隊購票依序入場

b)

文件列印先送先印

c)

影城劃位由前先選

d)

餐盤一疊由上取用

5.

若以陣列實作堆疊,當 top 指向最後一格且再進行 push 時,最可能發生什麼情況?

a)

發生 overflow 錯誤

b)

元素自動覆寫中間

c)

自動轉成鏈結結構

d)

發生 underflow 錯誤

6.

雙端佇列(deque)的正確描述為何?

a)

只能從前端插入與後端刪除

b)

可從兩端插入或刪除元素

c)

只能從後端插入與前端刪除

d)

可在任意位置插入與刪除

7.

在堆疊中,初始化時 top 的典型值為何?

a)

-1

b)

0

c)

MAX-1

d)

1

8.

推入元素到堆疊時,哪一個條件用來判斷溢位(overflow)?

a)

top 等於 0

b)

top 等於 MAX-1

c)

top 大於 MAX

d)

top 小於 -1

9.

從堆疊彈出(pop)一個元素的正確步驟順序為何?

a)

將 top 加一再讀取 a[top]

b)

讀取 a[top] 並將 top 減一

c)

清空陣列後讀取 a[0]

d)

將 a[top] 設零再將 top 加一

10.

火車車廂編號 1,2,3 依序進入堆疊後再依序出棧,以下哪一種排列不可能產生?

a)

132

b)

231

c)

312

d)

213

11.

線性佇列以陣列 Q[0:MAX-1] 表示,初始 front=-1, rear=-1。當插入第一個元素時,正確的變化為何?

a)

front++ 並在 Q[front] 存入,rear 仍為 -1

b)

rear++ 並在 Q[rear] 存入,front 仍為 -1

c)

front-- 並在 Q[0] 存入,rear 不變

d)

rear++ 並在 Q[rear] 存入,必要時 front 變為 0

12.

對於線性佇列,何時判定溢位(無法再加入)?

a)

rear 等於 MAX-1

b)

front 等於 0

c)

front 大於 rear

d)

rear 小於 MAX-1

13.

對於線性佇列刪除操作,何時判定佇列為空?

a)

front 等於 0

b)

rear 小於 0

c)

front 大於 rear

d)

rear 等於 MAX-1

14.

線性佇列會出現的主要限制是什麼?

a)

rear 到 MAX-1 時即視為滿,前端空位無法再用

b)

刪除操作時間為 O(n) 所以很慢

c)

佇列只能儲存相同型別資料

d)

入隊必須同時移動 front 和 rear

15.

在循環佇列中,使用模數運算更新 rear 指標的常見公式是哪一個?

a)

rear = (rear − 1) % MAX

b)

rear = rear + MAX − 1

c)

rear = (rear + 1) % MAX

d)

rear = (rear × 2) % MAX

16.

若循環佇列容量為 MAX,採用一個保留空位法避免滿與空判斷衝突,下列哪一個是判斷『佇列為空』的條件?

a)

front == rear

b)

(rear + 1) % MAX == front

c)

rear == MAX − 1 且 front == 0

d)

front == (rear + 2) % MAX

17.

在循環佇列中,將元素入隊時 front 與 rear 的更新敘述何者正確?

a)

rear 前進一格,元素寫入 rear 位置

b)

front 前進一格,元素寫入 front 位置

c)

rear 不變,front 後退一格再寫入

d)

front 與 rear 同時前進兩格寫入

18.

與線性佇列相比,循環佇列的主要優點是哪一項?

a)

提升空間利用率,避免前端空位浪費

b)

減少指標個數到只剩一個變數

c)

能以 O(1) 時間排序全部元素

d)

允許無限制擴充而不需容量

19.

考慮容量為 MAX 的循環佇列,採保留一格法。當 rear 位於 MAX−1,進行一次入隊後,rear 應該位於何處?

a)

回繞到 0 的位置

b)

停留在 MAX−1 不變

c)

移動到 front 的位置

d)

跳到 MAX−2 的位置

20.

在保留一格法下,何時應視為『佇列滿』以避免與空狀態混淆?

a)

front == rear

b)

(rear + 1) % MAX == front

c)

(front + 1) % MAX == rear

d)

front == 0 且 rear == MAX−1

21.

在使用堆疊將中序表達式轉為後序時,遇到運算元時最正確的處理是什麼?

a)

直接輸出到後序序列

b)

推入運算子堆疊中

c)

與堆疊頂端運算子比較ISP

d)

等待下一個token再決定

22.

在中序轉後序演算法中,當讀到左括號'('時應該如何處理?

a)

彈出直到堆疊為空

b)

立即輸出'('到結果

c)

將'('推入堆疊

d)

忽略左括號不處理

23.

若輸入token為運算子且其in-stack priority(ISP)大於或等於in-coming priority(ICP),應採取哪個動作?

a)

將輸入運算子丟棄

b)

清空堆疊後再推入

c)

將輸入運算子直接輸出

d)

彈出並輸出堆疊頂端運算子

24.

以下哪一項正確描述ISP與ICP在演算法中的角色?

a)

ICP與ISP完全無關且不比較

b)

ICP用於決定何時輸出運算元

c)

ISP只決定括號是否配對而非優先順序

d)

ISP比較堆疊內與即將進入的運算子優先順序

25.

將中序表達式A*(B+C)轉為後序的正確結果為何?

a)

AB*C+

b)

A*BC+

c)

A+BC*

d)

ABC+*

26.

表達式A+B*C的後序等價式是下列哪一個?

a)

A+BC*

b)

AB*C+

c)

AB+*C

d)

ABC*+

27.

在將中序轉後序時,遇到右括號')'應做什麼?

a)

彈出並輸出直到遇見左括號

b)

將右括號推入堆疊頂端

c)

清空輸出序列後繼續

d)

忽略右括號繼續讀取

28.

後序表達式的求值步驟,遇到運算元時應採取何動作?

a)

推入值堆疊中

b)

將其丟棄不處理

c)

與頂端值相乘後輸出

d)

先彈出兩個值再計算

29.

後序求值:給定後序表達式ab+c*,若a=2,b=3,c=4,結果為何?

a)

18

b)

24

c)

14

d)

20

30.

下列何者是把(a+b)*c/(d+e)-8正確轉成後序的結果?

a)

ab+c*de+/8-

b)

ab+c*de+/-8

c)

ab+*cde+/-8

d)

abc+*de+/8-