wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

CTDLGT_T03(Stack,Queue)

Total questions: 54

Worksheet time: 1hrs 21mins

Name
Class
Date
1.

Nêu khái niệm ngăn xếp (Stack)

a)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (cuối hàng) Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (cuối hàng)

b)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (đầu hàng) Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (cuối hàng)

c)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm hay loại lấy một phần tử ra khỏi danh sách đều được thực hiện ở một đầu gọi là đỉnh của ngăn xếp.

d)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (cuối hàng) Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (đầu hàng)

2.

Nêu khái niệm Hàng đợi (Queue):

a)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm hay loại lấy một phần tử ra khỏi danh sách đều được thực hiện ở một đầu gọi là đỉnh của ngăn xếp.

b)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (cuối hàng). Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (đầu hàng)

c)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (đầu hàng) Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (cuối hàng)

d)

Các phần tử được lưu trữ thành một danh sách liên tiếp nhau. Việc thêm 1 phần tử vào danh sách được thực hiện ở một đầu (cuối hàng) Việc lấy ra 1 phần tử của danh sách được thực hiện ở đầu khác (cuối hàng)

3.

Stack tuân theo cấu trúc LIFO. LIFO là viết tắt của cụm từ Tiếng Anh gì?

(a)  

4.

Queue tuân theo cấu trúc FIFO. FIFO là viết tắt của cụm từ Tiếng Anh gì?

(a)  

5.

Stack tuân theo cấu trúc LIFO có nghĩa là gì?

a)

Phần tử được đưa vào trong danh sách sau cùng sẽ được lấy ra trước tiên.

b)

Phần tử đưa vào trong danh sách trước tiên sẽ được lấy ra sau cùng

c)

Các phần tử vào trong danh sách trước sẽ được lấy ra trước.

d)

Tất cả các phương án đều sai

6.

Queue tuân theo cấu trúc FIFO có nghĩa là gì?

a)

Phần tử được đưa vào trong danh sách sau cùng sẽ được lấy ra trước tiên.

b)

Phần tử đưa vào trong danh sách trước tiên sẽ được lấy ra sau cùng

c)

Các phần tử vào trong danh sách trước sẽ được lấy ra trước.

d)

Tất cả các phương án đều đúng

7.

Trong thuật toán chuyển đổi một số nguyên từ hệ thập phân sang hệ nhị phân, người ta sẽ dùng cấu trúc dữ liệu nào dưới đây để lưu số dư của các phép chia.

a)

Queue

b)

Stack

c)

Array

d)

Tree

8.

Ngăn xếp được ứng dụng trong thuật toán “chuyển đổi một biểu thức toán học ở dạng Trung tố sang Hậu tố”. Hãy cho biết biểu thức hậu tố nhận được sau khi chúng ta cho chạy giải thuật “chuyển biểu thức từ trung tố sang hậu tố” với input là: 2 + 3 * 4 - 5

a)

2 3 + * 4 5 -

b)

2 3 4 5 * + -

c)

2 3 4 * 5 + -

d)

2 3 4 * + 5 -

9.

Trong ứng dụng quản lý danh sách bệnh nhân đang chờ tại một phòng khám X. Hãy lựa chọn cấu trúc dữ liệu phù hợp nhất để lưu danh sách bệnh nhân này; biết rằng các bệnh nhân đến đăng ký trước sẽ được vào khám trước.

a)

Queue

b)

Stack

c)

Array

d)

Tree

10.

Ngăn xếp được ứng dụng trong thuật toán “Tính giá trị của một biểu thức hậu tố”. Hãy cho biết giá trị tại đỉnh của ngăn xếp sau khi thực hiện thuật toán “Tính giá trị của một biểu thức hậu tố” với input là: 2 9 4 *  + 5  -

a)

30

b)

31

c)

32

d)

33

11.

Cho Stack có các phép toán:

push(X): Thêm phần tử X vào Stack

pop() : Lấy 1 phần tử ra khỏi Stack

Hãy cho biết phần tử ở đỉnh của Stack có giá trị bằng bao nhiêu sau khi thực hiện lần lượt các phép toán sau: push(5); push(3); pop(); push(4); push(6); pop()

a)

3

b)

4

c)

5

d)

6

12.

Cho Queue có các phép toán:

EnQueue(X): Thêm phần tử X vào Queue

DeQueue() : Lấy 1 phần tử ra khỏi Queue

Hãy cho biết phần tử ở đầu của Queue có giá trị bằng bao nhiêu sau khi thực hiện lần lượt các phép toán sau: EnQueue(5); EnQueue(3); DeQueue(); EnQueue(4); EnQueue(6);

a)

A.    3

b)

4

c)

5

d)

6

13.

Cho Queue có các phép toán:

EnQueue(X): Thêm phần tử X vào Queue

DeQueue() : Lấy 1 phần tử ra khỏi Queue

Hãy cho biết phần tử ở đầu của Queue có giá trị là ký tự nào, sau khi thực hiện thuật toán dưới đây với input là: “This**is***Queue*”

Thuật toán

Input: Xâu S

Đọc lần lượt từng ký tự từ trái qua phải của xâu S; Nếu ký tự đọc được là ‘*’ thì lấy 1 phần tử ra khỏi Queue. Ngược lại thì thêm phần tử đọc được vào Queue.

a)

T

b)

h

c)

u

d)

Q

14.

Cho Stack có các phép toán:

push(X): Thêm phần tử X vào Stack

pop() : Lấy 1 phần tử ra khỏi Stack

Hãy cho biết phần tử ở đỉnh của Stack có giá trị là ký tự nào, sau khi thực hiện thuật toán dưới đây với input là: “This**is***Stack*”

Thuật toán

Input: Xâu S

Đọc lần lượt từng ký tự từ trái qua phải của xâu S; Nếu ký tự đọc được là ‘*’ thì lấy 1 phần tử ra khỏi Stack. Ngược lại thì thêm phần tử đọc được vào Stack.

a)

T

b)

S

c)

c

d)

k

15.

Nhà logic học Balan Lukasiewicz đã đưa ra dạng biểu thức số học theo ký pháp hậu tố (postfix notation). Và ứng dụng ngăn xếp để thực hiện phép toán. Giả sử có biểu thức sau:(1 + 5) * ( 8 - (4 - 1)) Chuyển biểu thức này về dạng hậu tố cách nào sau đây là đúng

a)

1 5 + * 8 4 1 - -

b)

1 5 8 4 1- -+ *

c)

1 5 8 4 1+ - - *

d)

1 5 + 8 4 1 - - *

16.

Khi đổi một số nguyên từ hệ thập phân sang hệ nhị phân thì người ta dùng phép chia liên tiếp cho 2 và lấy các số dư (là các chữ số nhị phân) theo chiều ngược lại. Cơ chế sắp xếp này chính là cơ chế hoạt động của cấu trúc dữ liệu.

a)

Mảng (array)

b)

Bản ghi( Record)

c)

Hàng đợi(Queue)

d)

Ngăn xếp (stack)

17.

Cho Stack gồm 5 phần tử {12, 15, 18, 25, 30}, trong đó 30 là phần tử ở đỉnh Stack. Để thay số 18 bằng số 23 vào trong Stack ta phải làm thế nào?

a)

Pop(12), Pop(15), Pop(18)

b)

Pop(30), Pop(25), Pop(18), Push(23), Push(25), Push(30)

c)

Pop(30), Pop(25), Pop(18), Push(23), Push(15), Push(12)

d)

Pop(12), Pop(15), Pop(18), Push(23), Push(15), Push(12)

18.

Cho Stack gồm 5 phần tử {2, 10, 12, 15, 20}, trong đó 20 là phần tử ở đỉnh Stack. Để lấy ra phần tử thứ 3 trong Stack ta phải làm thế nào?

a)

Pop(2), Pop(10), Pop(12)

b)

Pop(20), Pop(15), Pop(12)

c)

Pop(2), Pop(10), Pop(12), Push(10), Push(2)

d)

Pop(20), Pop(15), Pop(12), Push(10), Push(2)

19.

Tính giá trị các biểu thức hậu tố sau 2 3 5 + * 1 2 + 4 *+

a)

42

b)

52

c)

28

d)

-28

20.

a)

Không có lỗi

b)

Stack không được khởi tạo đúng cách

c)

Phương thức Peek() không trả về giá trị

d)

Phương thức Pop() cần có tham số

21.

Giả sử có một Stack S chứa lần lượt 3 phần tử [1,2,3] với phần tử có giá trị là 1 ở đáy của Stack S . Sau khi thực hiện lần lượt các lệnh sau : S.Pop() ; S.Pop() ; và S.Push (4) ; Stack S sẽ chứa các phần tử là :

a)

1,2,4

b)

1,4

c)

4,2,1

d)

4

22.

Giả sử có một Stack rỗng s. Thực hiện các lệnh sau s.Push(1), s.Push(2) và s.Pop(). Giá trị phần tử Top của Stack s là:

a)

1

b)

2

c)

Không có giá trị

d)

Không xác định được

23.

a)

1

b)

2

c)

3

d)

4

24.

Giả sử có Queue Q ban đầu rỗng. Hãy cho biết giá trị các phần tử trong q sau khi thực hiện đoạn mã sau for (int i = 0; i <= 16; i++) {if (i % 3 == 0) Q.Enqueue(i); else if (i % 4 == 0) Q.Dequeue();}

a)

0,3,6,9,12,15

b)

9,12,15

c)

0,4,8,16

d)

0,3,4,6,8,9,12,15,16

25.

Giả sử có Queue q chứa 3 phần tử [1,2,3] với phần từ có giá trị là 1 ở đầu hàng đợi. Sau khi thực hiện q.Dequeue() ; q.Dequeue() ; và q.Enqueue(4) ; Các phần tử còn lại trong Queue q là ?

a)

1,2,4

b)

1,4

c)

4,2,1

d)

3,4

26.

Nếu các phần tử 'T', 'H', 'E', 'V' và 'A' được thêm lần lượt theo thứ tự vào trong một hàng đợi q và các phần tử này bị xóa lần lượt thì thứ tự khi xóa sẽ như thế nào?

a)

T H E V A

b)

H E V A T

c)

A V E H T

d)

T A H V E

27.

Biểu thức hậu tố nào là đúng từ biểu thức trung tố sau : 3 + 4 * 5

a)

3 4 5 + *

b)

3 4 5 * +

c)

3 4 + 5*

d)

3 4 * 5 +

28.

Giá trị của biểu thức hậu tố: 6 3 2 4 + - * bằng bao nhiêu?

a)

1

b)

40

c)

74

d)

-18

29.

Nếu trình tự các hoạt động được thực hiện trên một ngăn xếp như sau:

push(1)

push(3)

pop

push(2)

push(2)

pop

pop

pop

push(3)

pop

Thì thứ tự các giá trị nào là đúng?

a)

3, 2, 2, 3, 1

b)

3, 2, 1, 3, 2

c)

2, 3, 2, 3, 1

d)

1, 3, 2, 2, 3

30.

Hãy xem xét các hoạt động sau được thực hiện trên một ngăn xếp có kích thước 5:

Push(a)

Pop()

Push(b)

Push(c)

Pop()

Push(d)

Pop()

Pop()

Push(e)

Câu nào sau đây là đúng?

a)

Các hoạt động trên ngăn xếp được thực hiện đầy đủ

b)

Xảy ra tràn dưới (Underflow)

c)

Xảy ra tràn trên (Overflow)

d)

Không có trường hợp nào trong 3 trường hợp đó

31.

Nếu các phần tử “A”, “B”, “C” và “D” được đặt trong một ngăn xếp và bị xóa từng phần tử một, thì phần tử cuối cùng bị xóa sẽ là phần tử nào?

a)

A

b)

B

c)

C

d)

D

32.

Chuyển đổi dạng Infix sang Postfix:

v * w + (x * y) + z

a)

vw*xy*+z+

b)

vw*xy+*z*

c)

vw+xy*z+

d)

none

33.

Chuyển đổi dạng Infix sang Postfix:

A * B + C / D

a)

AB*CD/+

b)

*AB/CD+

c)

A*BC+/D

d)

ABCD+/*

34.

Phân tích đoạn mã sau và xác định thứ tự các ngăn xếp từ ngắn nhất đến dài nhất:

stack1.push(12);

stack2.push(24);

stack3.push(11);

stack1.push(37);

stack2.push(59);

stack3.push(46);

stack1.pop();

stack1.pop();

stack2.pop();

stack1.emplace(12);

stack2.emplace(20);

stack3.emplace(41);

stack1.emplace(19);

stack2.emplace(23);

stack3.emplace(10);

stack1.swap(stack2);

stack2.swap(stack3);

a)

Stack2, stack1, stack3

b)

Stack1, stack2, stack3

c)

Stack3, stack2, stack1

d)

None of the above

35.

Đây là khai báo cấu trúc dữ liệu gì ?

Const max = N ;

Type

A = Record front, rear : 0..max;

E : Array[1..max] Of Item;

End;

Var Q : A;

a)

Ngăn xếp (stack)

b)

Hàng đợi (queue)

c)

Con trỏ (pointer)

d)

Mảng (array)

36.

Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item thủ tục sau làm nhiệm vụ gì?

Procedure Initialize(Var Q : Queue);

Begin With Q Do

begin

front := 1;

rear := 0;

end;

End;

a)

Khởi tạo một hàng đợi rỗng

b)

Kiểm tra hàng đợi có rỗng hay không

c)

Thêm một phần tử vào hàng đợi

d)

Loại bỏ một phần tử ra khỏi hàng đợi

37.

Giả sử Q là Hàng đợi, các phần tử của nó có kiểu Item, Hàm sau làm nhiệm vụ gì?

Function F(Q : Queue) : Boolean;

Begin F:= (Q.rear = max);

End;

a)

Kiểm tra hàng đợi đầy.

b)

Khởi tạo một hàng đợi rỗng

c)

Kiểm tra hàng đợi có rỗng hay không

d)

Thêm một phần tử vào hàng đợi

38.

Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item Hàm sau làm nhiệm vụ gì? Function Empty(Q : Queue) : Boolean; Begin Empty := (Q.rear = 0); End;

a)

Kiểm tra hàng đợi có rỗng hay không

b)

Khởi tạo một hàng đợi rỗng

c)

Thêm một phần tử vào hàng đợi

d)

Kiểm tra hàng đợi đầy.

39.

Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item, X là một phần tử có cùng kiểu với các phần tử của hàng đợi. Thủ tục sau làm nhiệm vụ gì? Procedure Q1(Var Q : Queue; X : Item); Begin If Full(Q) Then write('Hang day') Else With Q Do begin rear := rear + 1; E[rear] := X; end; End;

a)

Khởi tạo một hàng đợi rỗng

b)

Kiểm tra hàng đợi đầy.

c)

Kiểm tra hàng đợi có rỗng hay không

d)

Thêm một phần tử vào hàng đợi

40.

Giả sử Q là Hàng đợi các phần tử của nó có kiểu Item, X là một phần tử có cùng kiểu với các phần tử của hàng đợi. Thủ tục sau làm nhiệm vụ gì? Procedure DeleteQ(Var Q : Queue; Var X : Item); Begin If Empty(Q) Then write('Hang rong') Else With Q Do begin X := E[front]; if front = rear then begin & vbCrLf & _ front := 1; rear : = 0; {khởi tạo lại hàng đợi} end else front := front + 1; end; End;

a)

Loại bỏ một phần tử ra khỏi hàng đợi

b)

Thêm một phần tử vào hàng đợi

c)

Kiểm tra hàng đợi có rỗng hay không

d)

Kiểm tra hàng đợi đầy.

41.

Khi loại bỏ một phần tử ra khỏi hàng đợi Thì:

a)

Cần khởi tạo lại hàng đợi

b)

Nếu hàng đợi chỉ có một phần tử thì không thể thực hiện việc loại bỏ

c)

Nếu hàng đợi đầy thì không thể thực hiện việc loại bỏ

d)

Nếu hàng đợi rỗng thì không thể thực hiện việc loại bỏ

42.

Khi bổ sung một phần tử mới vào hàng đợi cần kiểm tra

a)

Hàng đợi có bao nhiêu giá trị bằng 0

b)

Hàng đợi có bao nhiêu phần tử

c)

Hàng đợi có rỗng không

d)

Hàng đợi có đầy không

43.

Cho hàm H(n) (với n là số nguyên không âm)định nghĩa đệ quy như sau: H(n) =1 nếu n>=10 H(n)=2n+ H(n+2) nếu n<10 Tính H(5)

a)

41

b)

40

c)

42

d)

43

44.

Cấu trúc dữ liệu hàng đợi dùng để làm gì?

a)

a. Tổ chức quản lý và phân phối tiến trình trong các hệ điều hành

b)

b. Tổ chức xoá các quá trình tìm kiếm theo chiều rộng

c)

c. Khử đệ quy

d)

d. Tổ chức lưu bộ đệm bàn phím

45.

 Các thao tác cơ bản với queue

a)

a. Xoá một phần tử từ hàng đợi: dequeue()

b)

b. Tất cả các đáp án trên

c)

c. Kiểm tra xem hàng đợi đầy hay không: isFull()

d)

d. Thêm một phần tử vào hàng đợi: enqueue()

e)

e. Lấy phần tử ở đầu hàng đợi, mà không xoá phần tử này: peek()

46.

Việc chèn thêm 1 phần tử vào một hàng đợi bị đầy gọi là gì?

a)

underflow

b)

overflow

c)

front

d)

rear

47.

Điều kiện cần thiết được kiểm tra trước khi chèn một phần tử vào hàng đợi liên kết (a linked queue) là gì?

a)

Underflow

b)

Overflow

c)

Front value

d)

Rear value

48.

Một hàng đợi các ký tự hiện chứa a, b, c, d. Nội dung của hàng đợi sẽ là gì sau thao tác sau:

Delete,

Add W,

Add X,

Delete,

Add Y.

a)

A,B,C,W,Y

b)

A,B,C,D,W

c)

C,D,W,X,Y

d)

W,Y,X,C,D

49.

Nếu front=rear thì hàng đợi thế nào?

a)

full

b)

undeflow

c)

overflow

d)

empty

50.

Nếu các số 5, 10, 3, 42 được đưa vào hàng đợi theo thứ tự, thì phép lấy ra lần thứ hai sẽ trả về số nào?

a)

5

b)

10

c)

3

d)

42

51.

Hàng đợi đơn (Simple Queue) được triển khai bằng cách sử dụng một mảng có kích thước 10. Chỉ số mảng bắt đầu bằng 0, front là 6 và rear là 9. Việc chèn phần tử tiếp theo diễn ra ở chỉ số mảng nào?

a)

0

b)

7

c)

9

d)

Không thể chèn thêm phần tử vì mảng đã đầy ở cuối

52.

Cho Hàng đợi dịch vòng (Circular Queue) sau đây có thể chứa tối đa sáu phần tử với dữ liệu sau


front = 2, rear = 4

queue = _______; L, M, N, ___, ___


Điều gì sẽ xảy ra sau khi thực hiện thao tác ADD O ?

a)

front = 2 rear = 5

queue = ______; L, M, N, O, ___

b)

front = 3 rear = 5

queue = L, M, N, O, ___

c)

front = 3 rear = 4

queue = ______; L, M, N, O, ___

d)

front = 2 rear = 4

queue = L, M, N, O, ___

53.

Nếu các phần tử “A”, “B”, “C” và “D” được xếp vào hàng đợi và bị xóa từng phần tử một thì chúng sẽ bị xóa theo thứ tự nào?

a)

ABCD

b)

DCBA

c)

DCAB

d)

ABDC

54.

Hàng đợi dịch vòng (Circular Queue) được triển khai bằng cách sử dụng một mảng có kích thước 10. Chỉ số mảng bắt đầu bằng 0, front là 6 và rear là 9. Việc chèn phần tử tiếp theo diễn ra ở chỉ số mảng nào?

a)

0

b)

7

c)

9

d)

10