Tải bản đầy đủ (.pdf) (33 trang)

Đáp Án Cấu trúc Dữ Liệu và Giải Thuật Đại Học Thái Nguyên Tnu onlie

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (189.59 KB, 33 trang )

TUẦN 1
cÂU 1. Yêu cầu khi chọn kiểu dữ liệu cho chương trình là?
A.Kiểu dữ liệu càng lớn càng tốt.
B.Kiểu dữ liệu càng nhỏ càng tốt.
C.Kiểu dữ liệu cần sát với kiểu giá trị của các thơng tin đó trong thực tế.
D.Có thể chọn bất cứ kiểu dữ liệu nào
Đáp án đúng là: Kiểu dữ liệu cần sát với kiểu giá trị của các thơng tin đó trong thực
tế.
Câu Hỏi 2Đâu là kiểu dữ liệu cơ bản trong các kiểu dữ liệu dưới đây?
A.Kiểu mảng.
B.Kiểu số nguyên.
C.Kiểu cấu trúc bản ghi.
D.Kiểu tệp tin.
Đáp án đúng là: Kiểu số nguyên.
Câu Hỏi 3Hãy cho biết kết quả của phép MOD hai số ngun có kiểu gì?
Chọn một:
A.Kiểu số thực.
B.Kiểu logic.
C.Kiểu số ngun.
D.Kiểu ký tự.
Đáp án đúng là: Kiểu số nguyên”.
Câu Hỏi 4. Đâu là một trong những tiêu chí khi chọn ngơn ngữ diễn đạt giải
thuật ?
A.Ngôn ngữ càng gần với ngôn ngữ máy càng tốt
B.Ngôn ngữ tiếng Việt.
C.Gần với ngôn ngữ lập trình hiện có.
D.Chọn ngơn ngữ nào bạn thích
Đáp án đúng là: Gần với ngơn ngữ lập trình hiện có.
Câu Hỏi 5Hãy cho biết ưu điểm của các kiểu dữ liệu trừu tượng.
A.Giúp cho người lập trình dễ viết chương trình.
B.Giúp cho giải thuật đơn giản hơn.


C.Giúp cho người dùng dễ sử dụng chương trình.
D.Giúp cho người lập trình khơng phải quá quan tâm đến các cách thức biểu
diễn cụ thể các dữ liệu đó trên máy tính.
Đáp án đúng là: Giúp cho người lập trình khơng phải q quan tâm đến các cách
thức biểu diễn cụ thể các dữ liệu đó trên máy tính.
Câu Hỏi 6Hãy cho biết kiểu dữ liệu trừu tượng là gì?
A.Là kiểu dữ liệu đa năng phù hợp với mọi loại giá trị.
BLà kiểu dữ liệu khơng có giới hạn về độ lớn.
C.Là kiểu dữ liệu mới do người dùng tự định nghĩa
D.Là kiểu dữ liệu do hệ thống tự sinh ra.
Đáp án đúng là: Là kiểu dữ liệu mới do người dùng tự định nghĩa.
Câu Hỏi 7Kiểu dữ liệu nào thuộc loại kiểu dữ liệu cơ bản?
A.RECORD
B.POINTER


C.ARRAY
D.STRING
Đáp án đúng là: POINTER.
Câu Hỏi 8Chọn định nghĩa đúng nhất cho từ Giải thuật?
A.Là các giải thích về các thuật ngữ trong tin học.
B.Là cách biểu diễn cấu trúc dữ liệu dưới dạng giả mã, ngôn ngữ tự nhiên, sơ đồ
khối…
C.Là một tập hợp hữu hạn của các chỉ thị hay phương cách được định nghĩa
rõ ràng cho việc hoàn tất một số sự việc từ một trạng thái ban đầu cho trước;
khi các chỉ thị này được áp dụng triệt để thì sẽ dẫn đến kết quả sau cùng như
đã dự đoán.
D.Là tập hợp các lệnh xử lý dữ liệu.
Câu Hỏi 9Hãy cho biết ý nghĩa của kiểu dữ liệu logic (BOOLEAN)
A.Dùng trong tính tốn số học.

B.Dùng trong các phép so sánh.
C.Dùng để biểu diễn các giá trị logic bao gồm 2 giá trị đúng (true) và sai
(false).
D.Dùng trong các phép toán logic.
Đáp án đúng là: Dùng để biểu diễn các giá trị logic bao gồm 2 giá trị đúng (true) và
sai (false).
Câu Hỏi 10Kiểu dữ liệu cơ bản là gì?
A.Là kiểu dữ liệu đơn giản.
B.Là kiểu dữ liệu giúp cho việc lập trình dễ dàng hơn.
C.Là kiểu dữ liệu có sẵn trên hầu hết các máy tính và được hỗ trợ trong hầu
hết các ngôn ngữ lập trình.
D.Là kiểu dữ liệu khơng địi hỏi kĩ thuật cao trong xử lý.
Đáp án đúng là: Là kiểu dữ liệu có sẵn trên hầu hết các máy tính và được hỗ trợ
trong hầu hết các ngơn ngữ lập trình.
Câu 1. Nếu số lần gọi truy hồi đến giải thuật Fibonnaci tại vị trí thứ n là nF(n)
thì nF(n) được tính theo công thức nào?
A.nF(n) = nF(n-1) + nF(n-2).
B.nF(n) = 2 + F(n-1) + F(n-2).
C.nF(n) = 1 + nF(n-1) + nF(n-2).
D.nF(n) = 2+ nF(n-1) + nF(n-2).
Đáp án đúng là: nF(n) = 1 + nF(n-1) + nF(n-2).
Câu:2Hãy cho biết cấu trúc dữ liệu kiểu mảng (Array) được sử dụng để làm
gì?
A.Được sử dụng để lưu trữ liên tiếp các phần tử thuộc cùng một kiểu dữ liệu.
B.Được sử dụng để lưu trữ liên tiếp các phần tử thuộc kiểu dữ liệu cơ bản.
C.Được sử dụng để lưu trữ liên tiếp các phần tử thuộc kiểu dữ liệu trừu tượng
D.Được sử dụng để lưu trữ liên tiếp các phần tử thuộc kiểu ký tự và số nguyên
Đáp án đúng là: Được sử dụng để lưu trữ liên tiếp các phần tử thuộc cùng một kiểu
dữ liệu.



Câu:3 Kiểu dữ liệu nào thuộc loại kiểu dữ liệu cơ bản?
A.RECORD
B.POINTER
C.ARRAY
D.STRING
Đáp án đúng là: POINTER.
Câu 4. Chọn định nghĩa đúng nhất cho từ Giải thuật?
A.Là các giải thích về các thuật ngữ trong tin học.
B.Là cách biểu diễn cấu trúc dữ liệu dưới dạng giả mã, ngôn ngữ tự nhiên, sơ đồ
khối…
C.Là một tập hợp hữu hạn của các chỉ thị hay phương cách được định nghĩa
rõ ràng cho việc hoàn tất một số sự việc từ một trạng thái ban đầu cho trước;
khi các chỉ thị này được áp dụng triệt để thì sẽ dẫn đến kết quả sau cùng như
đã dự đoán.
D.Là tập hợp các lệnh xử lý dữ liệu.
Phản hồi
Câu 5. Hãy cho biết giá trị của “con trỏ” là gì?
A.Là địa chỉ đến một vùng bộ nhớ nhất định.
B.Là địa chỉ vị trí của con trỏ
C.Là giá trị tại một vùng bộ nhớ
D.Là giá trị của các kiểu dữ liệu khác.
Phản hồi
Câu trả lời của bạn chưa chính xác
Đáp án đúng là: Là địa chỉ đến một vùng bộ nhớ nhất định.
Câu 6. Hãy cho biết ý nghĩa của kiểu dữ liệu logic (BOOLEAN)
A.Dùng trong tính tốn số học.
B.Dùng trong các phép so sánh.
C.Dùng để biểu diễn các giá trị logic bao gồm 2 giá trị đúng (true) và sai
(false).

D.Dùng trong các phép toán logic.
Đáp án đúng là: Dùng để biểu diễn các giá trị logic bao gồm 2 giá trị đúng (true) và
sai (false).
Câu 7. Đâu là một trong những tiêu chí khi chọn ngôn ngữ diễn đạt giải thuật
?
A.Ngôn ngữ càng gần với ngôn ngữ máy càng tốt
B.Ngôn ngữ tiếng Việt.
C.Gần với ngôn ngữ lập trình hiện có.
D.Chọn ngơn ngữ nào bạn thích
Đáp án đúng là: Gần với ngơn ngữ lập trình hiện có.
Câu 8. Hãy cho biết giải thuật đệ quy tìm ước số chung lớn nhất của hai số nguyên
A,B> 0 thì điều kiện kết thúc đệ quy là gì?
A.A=0 và B =0
B.A=1 và A>B
C.A=0 hoặc B=0
D.A=1 và A#B


Đáp án đúng là: A=0 hoặc B=0.
Câu 9. Kiểu dữ liệu con trỏ được dùng để làm gì?
A.Được dùng để trỏ tới một giá trị.
B.Được dùng để lưu các con trỏ đến bất kỳ một kiểu dữ liệu nào khác.
C.Được dùng để lưu vị trí con trỏ.
D.Được dùng để lưu giá trị của ô nhớ.
Đáp án đúng là: Được dùng để lưu các con trỏ đến bất kỳ một kiểu dữ liệu nào
khác.
Câu 10.Kiểu truy cập các phần tử trong một mảng là kiểu truy cập nào trong
các kiểu dưới đây?
A.Kiểu truy cập ngẫu nhiên
B.Kiểu truy cập song song

C.Kiểu truy cập nhanh
D.Kiểu truy cập tuần tự.
Đáp án đúng là: Kiểu truy cập ngẫu nhiên.
TUẦN 2.
Câu 1: Trong việc ứng dụng danh sách liên kết để tính tốn giá trị của một đa
thức 1 ẩn bậc n, để lưu trữ đa thức trong danh sách liên kết thì mỗi nút của
danh sách thường có mấy trường:
A.1
B.2
C.3
D.4
Đáp án đúng là: 3.
Câu Hỏi 2:Lựa chọn định nghĩa đúng nhất về danh sách?
A.Danh sách là tập hợp các phần tử có cùng kiểu dữ liệu.
B.Danh sách là tập hợp các phần tử có kiểu dữ liệu xác định và giữa chúng có
một mối liên hệ nào đó.
C.Danh sách là tập hợp các phần tử mà giữa chúng có một mối liên hệ nào đó.
D.Danh sách là tập hợp các phần tử có cùng giá trị
Đáp án đúng là: Danh sách là tập hợp các phần tử có kiểu dữ liệu xác định và giữa
chúng có một mối liên hệ nào đó.
Câu Hỏi 3:Với cấu trúc dữ liệu của danh sách liên kết đơn lưu trữ thơng tin
về phịng máy
typedef struct PM
{int maPM;
int tongsoMay;
} PHONGMAY;
typedef struct Node
{ PHONGMAY Data;
Node * NextNode;
} OneNode;

typedef OneNode * SLLPointer;


Để quản lý danh sách liên kết đơn bằng phần tử đầu và phần tử cuối, cần định
nghĩa kiểu dữ liệu:
A.SLLPointer DanhSach;
B.typedef struct SSLLIST
{ SLLPointer First;
SLLPointer Last;
} LIST;
LIST DanhSach;
C.typedef struct SSLLIST
{ SLLPointer First;
SLLPointer Last;
int total;
} LIST;
LIST DanhSach;
D.typedef struct SSLLIST
{ SLLPointer First;
int total;
} LIST;
LIST DanhSach;
Đáp án đúng là:
typedef struct SSLLIST
{ SLLPointer First;
SLLPointer Last;
} LIST;
LIST DanhSach;
Câu Hỏi 4Lựa chọn câu đúng nhất về danh sách liên kết đôi (Doubly Linked
List)

A.Vùng liên kết của một phần tử trong danh sách liên đơi có 02 mối liên kết với 01
phần tử khác trong danh sách.
B.Vùng liên kết của một phần tử trong danh sách liên đơi có 01 mối liên kết với 02
phần tử khác trong danh sách.
C.Vùng liên kết của một phần tử trong danh sách liên đơi có 02 mối liên kết,
01 với phần tử trước và 01 với phần tử sau nó trong danh sách.
D.Vùng liên kết của một phần tử trong danh sách liên đơi có 02 mối liên kết với
phần tử đầu và cuối của danh sách.
Đáp án đúng là: Vùng liên kết của một phần tử trong danh sách liên đơi có 02 mối
liên kết, 01 với phần tử trước và 01 với phần tử sau nó trong danh sách.
Câu Hỏi 5Biểu diễn danh sách bằng mảng được mô tả như sau:
#define Max_Size N
typedef Kieu_du_lieu E_Type;
struct ListType
{E_Type Element[Max_Size];
int Size;
} List;


Điều kiện danh sách đầy là:
A.Size = 0
B.List = Max_Size
C.List.Size = Max_Size
D.Size.List = Max_Size
Câu Hỏi 6Với cấu trúc dữ liệu như sau
typedef struct DNode
{int Key;
DNode * NextNode;
DNode * PreNode;
} DOneNode;

typedef DOneNode * DPointerType;
typedef struct DLLPairNode
{DPointerType DLLFirst;
DPointerType DLLLast;
} DLLPType;
Hãy cho biết hàm sau dùng để làm gì?
void DLLTravelling (DLLPType DList)
{DPointerType CurrNode = DList.DLLFirst;
while (CurrNode != NULL)
{cout << CurrNode->Key;
CurrNode = CurrNode->NextNode ;
}
return;
}
A.Duyệt qua các nút trong danh sách và hiển thị nội dung của mỗi nút
B.Duyệt danh sách
C.Thêm một phần tử vào danh sách
D.Xoá một phần tử khỏi danh sách
Đáp án đúng là: Duyệt qua các nút trong danh sách và hiển thị nội dung của mỗi
nút.
Câu Hỏi 7Cho biết ý nghĩa của hàm sau :
ListType Insert_E(int Pos,E_Type Item,ListType List)
{
int k,j;
if (List.Size == Max_Size)
printf("danh sach day khong the chen them");
else
{
for (k = List.Size-1; k >= Pos-2; k--)
{

j = k+1;
if (k==Pos-2)
List.Element[j]=Item;


else
List.Element[j]=List.Element[k];
}
List.Size=List.Size+1;
}return List;
}
A.Để thêm một phần tử Item vào vị trí Pos-2 trong danh sách List
B.Để thêm một phần tử Item vào vị trí Pos-1 trong danh sách List
C.Để thêm một phần tử Item vào vị trí Pos trong danh sách List
D.Để thêm một phần tử Item vào vị trí Pos+1 trong danh sách List
Phản hồi
Câu trả lời của bạn chưa chính xác
Đáp án đúng là: Để thêm một phần tử Item vào vị trí Pos-1 trong danh sách List
Câu Hỏi 8Định nghĩa cấu trúc dữ liệu của danh sách liên kết đôi được mô tả
như sau:
Typedef Kieu_du_lieu ElementType;
typedef struct NodeType
{
ElementType Data;
struct NodeType *next, *prev;
}Node ;
Hãy chọn mô tả đúng nhất cho khai báo NodeType *next
A.Con trỏ trỏ tới phần dữ liệu
B.Vùng liên kết quản lý địa chỉ phần tử kế tiếp
C.Con trỏ trỏ tới địa chỉ vùng nhớ của phần tử trước đó trong danh sách liên kết

đơi
D.Con trỏ trỏ tới địa chỉ vùng nhớ của phần tử đầu tiên trong danh sách liên kết
đôi.
Đáp án đúng là: Vùng liên kết quản lý địa chỉ phần tử kế tiếp.
Câu Hỏi 9Cho danh sách L = (1, 8, 9, 2, 4, 0, 6, 7, 5). Thủ tục DSC_L(Pos1;
Pos2: position ; var List: ListType) để đưa ra một danh sách con của List bắt đầu
từ vị trí Pos1 đến vị trí Pos2 và trả giá trị cho List. Thủ tục Delete_L(Pos: position
; var List: ListType) để xóa một phần tử tại vị trí Pos khỏi danh sách List. Thủ tục
Insert_L(Pos: position ; X: Item; var List: ListType) để thêm một phần tử X vào vị
trí Pos trong danh sách List. Khi đó nếu ta thực hiện liên tiếp DSC_L(2,7,L),
Delete_L (2,L), Insert_L(2,3,L) thì kết quả sẽ được danh sách L như sau?
A.(1, 3, 4, 0, 6, 7)
B.(8, 2, 3, 4, 0, 6)
C.(8, 3, 2, 4, 0, 6)
D.(8, 3, 9, 4, 0, 6)
Đáp án đúng là: (8, 3, 2, 4, 0, 6)
Câu Hỏi 10 Cho danh sách L = (1, 5, 3, 2, 4, 0, 6). Thủ tục Delete_L(Pos:
position ; var List: ListType) để xóa một phần tử tại vị trí Pos khỏi danh


sách List. Khi đó nếu ta thực hiện liên tiếp Delete_L(2,L), Delete_L(4,L) thì kết
quả sẽ được danh sách L như sau?
A.(1, 5, 2, 4, 6)
B.(1, 2, 4, 0, 6)
C.(1, 3, 2, 0, 6)
D.(1, 3, 4, 0, 6)
Đáp án đúng là: (1, 3, 2, 0, 6)
Câu 11: Cho danh sách L = (1, 5, 3, 2, 4, 0, 6, 8, 9) được biểu diễn bằng mảng.
Thủ tục Insert_L(Pos: position; X: Item; var List: ListType) để thêm một phần
tử X vào vị trí Pos trong danh sách List. Khi đó nếu ta thực hiện Insert_L(3,7,L) thì

cần phải thực hiện tối thiểu bao nhiêu phép thay đổi giá trị các phần tử trong
mảng?
A.6
B.7
C.8
D.9
Câu Hỏi 2Cho danh sách L = (0, 3, 7, 2, 4, 9). Đâu là danh sách con của L?
A.(0, 3, 2, 7)
B.(0, 3, 7, 2)
C.(0, 3, 4, 2, 9)
D.(0, 3, 4, 9)
Đáp án đúng là: (0, 3, 7, 2)
Câu Hỏi 3Một danh sách rỗng khi:
A.độ dài của danh sách bằng 1
B.độ dài của danh sách bằng 0
C.độ dài của danh sách không xác định
D.tổng giá trị các phần tử của danh sách bằng 0
Đáp án đúng là: Độ dài của danh sách bằng 0.
Câu Hỏi 4Trong định nghĩa danh sách liên kết đôi, mỗi nút gồm bao nhiêu
thành phần?
A.1 thành phần
B.2 thành phần
C.3 thành phần
D.4 thành phần
Đáp án đúng là: 3 thành phần.
Câu Hỏi 5
Khi cài đặt danh sách bằng mảng, với độ dài là n thì thao tác chèn một phần tử vào
danh sách có độ phức tạp:
A.O(n2).
B.O(n.log2(n)).

C.O(n).
D.O(2n).
Câu 14. Định nghĩa nào là đúng với danh sách liên kết?
A.Danh sách liên kết là cấu trúc dữ liệu dạng cây.


B.Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa.
C.Danh sách liên kết là tập hợp các phần tử mà giữa chúng có một sự nối kết
với nhau thông qua vùng liên kết của chúng.
D.Danh sách liên kết là tập hợp các phần tử mà đặt kề cận với nhau trong vùng
nhớ.

Tuần 3.
Câu 1; Cho biểu thức số học dạng thông thường: (a+b)*(c-(d-e))
Đâu là biểu diễn biểu thức này dưới dạng biểu thức Balan?
A.ab *+ cde -B.ab + cde --*
C.abc *+ de -D.ab + cde *-Câu Hỏi 2Cho biểu thức số học dạng Balan như sau: 1 2 3 4 *- + 5 6 4 8 – – +
*. Việc tính tốn giá trị biểu thức này khi dùng Stack được cài đặt bằng mảng thì
phần tử được đẩy vào Stack lần thứ 10 có giá trị là bao nhiêu?
A.4
B.5
C.6
D.7
Câu Hỏi 3Cấu trúc dữ liệu nào tương ứng với nguyên lý LIFO.
A.Queue
B.Linked List
C.Tree
D.Stack
Đáp án đúng là: Stack.
Vì: Stack (ngăn xếp) là một dạng đặc biệt của danh sách mà việc bổ sung hay loại

bỏ một phần tử đều được thực hiện ở một đầu của danh sách gọi là đỉnh. Nói cách
khác, ngăn xếp là một cấu trúc dữ liệu có 2 thao tác cơ bản: bổ sung (push) và loại
bỏ (pop), trong đó việc loại bỏ sẽ tiến hành loại phần tử mới nhất được đưa vào
danh sách. Chính vì tính chất này mà ngăn xếp cịn được gọi là kiểu dữ liệu có
nguyên tắc LIFO (last in first out – vào sau ra trước).
Câu Hỏi 4Việc cài đặt ngăn xếp bằng mảng được thực hiện qua khai báo dưới
đây:
#define max N
typedef int ElementType;
struct Stack
{
int Top_id;
ElementType Element[max];
};
Stack S;
Ý nghĩa đúng nhất của S là:
A.Độ lớn cực đại của Stack


B.Tên của Stack
C.Chứa các phần tử của Stack
D.Kiểu dữ liệu của các phần tử trong Stack
Vì: khai báo biến S có kiểu Stack
Câu Hỏi 5Trong việc cài đặt ngăn xếp bằng mảng A[…], nếu hiện tại ngăn xếp
có n phần tử thì phần tử mới nhất vừa được đưa vào ngăn xếp vị trí nào trong
mảng?
A.A[0]
B.A[1]
C.A[n-1]
D.A[n]

Đáp án đúng là: A[n-1].
Vì: Khi sử dụng mảng 1 chiều A[] để biểu diễn ngăn xếp thì phần tử đầu tiên A[0]
của mảng A[] là đáy ngăn xếp. Do đó, phần tử mới nhất vừa được đưa vào ngăn
xếp sẽ có vị trí A[n-1] trong mảng A[] đã có n phần tử.
Câu Hỏi 6Việc lấy một phần tử khỏi đỉnh Stack khi cài đặt Stack bằng danh
sách liên kết được thực hiện bằng đoạn mã dưới đây:
ElementType POP(Stack *S)
{
StackNode *p;// Con trỏ tạm thời chỉ đến nút ở đỉnh
if(StackEmpty(S))
{
printf("ngan xep rong");
return NULL;
}
else
{
p = S –> Top;
……………...;
return p –> Data;
}
}
Hãy lựa chọn câu trả lời đúng nhất nội dung điền vào chỗ trống (.........) của đoạn
mã trên:
A.S –> Top –> Next
B.S –> Top = S –> Top –> Next
C.S –> Top = S –> Next
D.Top = Next
Đáp án đúng là: S –> Top = S –> Top –> Next.
Vì: Việc lấy một phần tử khỏi đỉnh Stack khi cài đặt Stack bằng danh sách liên kết
được thực hiện :

- Nếu ngăn xếp rỗng: return NULL
- Nếu ngăn xếp không rỗng:
Cất đỉnh ngăn xếp vào biến con trỏ p : p = S –> Top;


Và con trỏ đỉnh ngăn xếp nhỏ tới phần tử tiếp theo (lúc này là đỉnh mới của ngăn
xếp): S –> Top = S –> Top –> Next;
Câu Hỏi 7Việc cài đặt ngăn xếp bằng mảng được thực hiện qua khai báo dưới
đây:
#define max N
typedef int ElementType;
struct Stack
{
int Top_id;
ElementType Element[max];
};
Stack S;
Ý nghĩa đúng nhất của ElementType là:
A.Chứa các phần tử của Stack
B.Số phần tử hiện thời của Stack
C.Vị trí đỉnh hiện tại của Stack
D.Kiểu dữ liệu của các phần tử trong Stack
Đáp án đúng là: Kiểu dữ liệu của các phần tử trong Stack.
Vì:Cài đặt ngăn xếp bằng mảng: top_id: biến số nguyên để lưu giữ đỉnh hiện tại
của ngăn xếp.
ElementType: Kiểu dữ liệu của các phần tử trong Stack
Câu Hỏi 8Cho biểu thức số học dạng Balan như sau: abc +* de /- với các giá
trị a=1; b=2; c=3; d=8; e=4; thì giá trị của biểu thức là:
A.1
B.2

C.3
D.4
Đáp án đúng là: 3
Vì: Việc tính giá trị của biểu thức ở dạng biểu thức Ba Lan được thực hiện: biểu
thức được đọc từ trái sang phải cho đến khi tìm được một tốn tử. Tại thời điểm
đó, hai tốn hạng cuối cùng được đọc kết hợp với toán tử này.
Biểu thức Balan dạng: abc +* de /Với các giá trị abcde đầu bài cho ta có: 1 2 3 +* 8 4 /Áp dụng nguyên tắc trên: 1 * (2+3) - (8/4) = 3
Câu Hỏi 9Việc lấy một phần tử khỏi đỉnh Stack được thực hiện bằng đoạn mã
dưới đây:
ElementType POP(Stack *S)
{
if (StackEmpty(*S))
{
printf("ngan xep rong");
}
else
{


return *S.Element[…………..];
}
}
Hãy lựa chọn câu trả lời đúng nhất nội dung điền vào chỗ trống (.........) của đoạn
mã trên:
A.S–>Top_id -B.Top_id -C.S–>Top_id ++
D.S–>Top_id +
Phản hồi
Câu trả lời của bạn chưa chính xác
Đáp án đúng là: S–>Top_id -Vì: top_id là biến lưu giữ đỉnh hiện tại của ngăn xếp, do đó khi lấy một phần tử
khỏi đỉnh Stack thì top_id giảm đi một đơn vị: S–>Top_id -Câu Hỏi 10Biểu diễn và tổ chức ngăn xếp (Stack) bằng danh sách liên kết giả

sử bề mặt của ngăn xếp là đầu danh sách liên kết.
typedef struct SElement
{T Key;
SElement *Next;
} SOneElement;
typedef struct SOneElement *SSTACK;
SSTACK SSP;
Thêm 1 phần tử vào ngăn xếp (dùng cấu trúc dữ liệu mô tả ở trên)
B1: NewElement = Khởi tạo nút mới (dùng toán tử new)
B2: if (NewElement == NULL)
Thực hiện BKT
B3: if (SSP == NULL)
B3.1: SSP = NewElement
B3.2: Thực hiện BKT
B4:.……………………………………
B5: ……………………………………
BKT: Kết thúc
Chọn câu lệnh chính xác cho B4 và B5
A.B4: NewElement ->Next = SSP
B5: SSP = NewElement
B.B4: SSP = NewElement ->Next
B5: SSP = NewElement
C.B4: SSP = NewElement ->Next
B5: NewElement = SSP
D.B4: NewElement ->Next = SSP
B5: NewElement = SSP
Đáp án đúng là:
B4: NewElement ->Next = SSP
B5: SSP = NewElement.



Câu 11; Cho biểu thức số học dạng Balan như sau: 1 2 3 4 *- + 5 6 4 8 – – + *.
Việc tính tốn giá trị biểu thức này khi dùng Stack được cài đặt bằng mảng
thì phần tử được đẩy vào Stack lần thứ 8 có giá trị là bao nhiêu?
A.5
B.6
C.7
D.8
Đáp án đúng là: 5
Vì: Với biểu thức Balan:
1 2 3 4 *- + 5 6 4 8 – – + *
Ta thấy, việc tính tốn giá trị biểu thức này khi dùng Stack được cài đặt bằng mảng
thì phần tử được đẩy vào Stack lần thứ 8 có giá trị 5. Cụ thể:
Câu Hỏi 2Cho biểu thức số học dạng thông thường: a * (b + c) - d/e
Đâu là biểu diễn biểu thức này dưới dạng biểu thức Balan?
A.ab * c + de /B.abc + * de /C.abc *+ de /D.abc +* de -/
Vì: Biểu diễn biểu thức số học dạng thông thường sang dạng biểu thức Balan là
không cần dùng đến các dấu ngoặc và luôn thực hiện từ trái sang phải.
Câu Hỏi 3Trong việc cài đặt ngăn xếp bằng mảng A[…], ta sử dụng một
biến top_id để lưu giữ đỉnh của ngăn xếp, nếu hiện tại ngăn xếp chưa có phần
tử thì giá trị của top_id là bao nhiêu?
A.-1
B.0
C.n-1
D.n
Vì: Khi đó, theo quy ước ngăn xếp chưa có phần tử nào (ngăn xếp rỗng)
thì top_id = -1
Câu Hỏi 4Cho biểu thức số học dạng thông thường: (a+b)*(c-(d/e))
Đâu là biểu diễn biểu thức này dưới dạng biểu thức Balan?



A.ab *+ cde /B.abc *+ de /C.ab + cde /-*
D.ab + cde */Đáp án đúng là: ab + cde /-*
Vì: Biểu diễn biểu thức số học dạng thông thường sang dạng biểu thức Balan là
không cần dùng đến các dấu ngoặc và luôn thực hiện từ trái sang phải.
Câu Hỏi 5Khi dùng Stack được cài đặt bằng mảng để đổi số tự nhiên N = 70 (hệ cơ
số 10) sang hệ nhị phân thì số phần tử tối thiểu của mảng phải là bao nhiêu?
A.4
B.5
C.6
D.7
Đáp án đúng là: 7
Vì:(70)10 = (1000110)2 có 7 phân tử dạng nhị phân, số phần tử tối thiểu của mảng
phải là 7.

Câu Hỏi 6 Cho biểu thức số học dạng Balan như sau: 1 2 3 4 *- + 5 6 4 8 – – +
*. Việc tính tốn giá trị biểu thức này khi dùng Stack được cài đặt bằng mảng
thì số phần tử tối thiểu của mảng phải là bao nhiêu?
A.5
B.6
C.7
D.8
Vì: Với các bước thực hiện biểu thức Balan: 1 2 3 4 *- + 5 6 4 8 – – + *. Ta thấy,
khi thực hiện biểu thức thì số tốn hạng trong stack tại một thời điểm tối đa là 5
phần tử (-9,5,6,4,8). Do đó, đáp án đúng là 5. Cụ thể:

TUẦN 4
Cau 21;Việc cài đặt hàng đợi bằng danh sách liên kết được thực hiện qua khai
báo dưới đây:



typedef int ELEMENT;
struct LIST_ELEMENT
{ELEMENT info;
struct LIST_ELEMENT *next;
};Ý nghĩa đúng nhất của ELEMENT là:
A.Độ lớn cực đại của hàng đợi
B.Số phần tử hiện thời của hàng đợi
C.Chứa các phần tử của hàng đợi
D.Kiểu dữ liệu của các phần tử trong hàng đợi
Câu 22.Việc cài đặt hàng đợi bằng mảng được thực hiện qua khai báo dưới
đây: (Câu này với câu 21 gần giống nhau)
#define max N
typedef int ELEMENT;
struct QUEUE_ARRAY
{ELEMENT ele[max];
int capacity, H, T, S;
} q. Ý nghĩa đúng nhất của S là:
A.Độ lớn cực đại của hàng đợi
B.Số phần tử hiện thời của hàng đợi
C.Vị trí đỉnh hiện tại của hàng đợi
D.Kiểu dữ liệu của các phần tử trong hàng đợi
Câu Hỏi 2Việc bổ sung thêm phần tử vào hàng đợi được thực hiện bằng đoạn
mã dưới đây:
void ENQUEUE(QUEUE_ARRAY q, ELEMENT e)
{if (IS_FULL(q)!= 0)
printf("hang doi day khong the chen them");
else{if (q.T == q.capacity–1)
q.T=0;
else

…………..;
q.ele[q.T]=e;
q.S=q.S+1;
}}Hãy lựa chọn câu trả lời đúng nhất nội dung điền vào chỗ trống (.........) của đoạn
mã trên:
A.q.T=q.T-1


B.q.T=1
C.q.T=q.T+1
D.q.T=q.S+1
Câu Hỏi 3
Cho đồ thị như hình dưới đây, việc tìm đường đi ngắn nhất từ đỉnh 6 đến đỉnh
8 ta sử dụng cấu trúc dữ liệu hàng đợi, nếu ta đặt tên các biến như sau: biến
T thể hiện vị trí đi, biến H thể hiện vị trí đầu, biến S thể hiện số lượng phần
tử. Giá trị lớn nhất của S là bao nhiêu?
A.3
B.4
C.5
D.6
Câu Hỏi 4
Việc kiểm tra hàng đợi có rỗng khơng được thực hiện bằng đoạn mã dưới
đây:
int IS_EMPTY(QUEUE_ARRAY q)
{
if (………)
return 1;
else
return 0;
}

Hãy lựa chọn câu trả lời đúng nhất nội dung điền vào chỗ trống (.........) của đoạn
mã trên:
A.S == 0
B.q.S == 0
C.q.S == 1
D.q.S == -1
Câu Hỏi 5
Câu 5;Khi cài đặt hàng đợi bằng mảng, nếu ta đặt tên các biến như sau: biến
T thể hiện vị trí đi, biến H thể hiện vị trí đầu. Thao tác lấy ra 1 phần tử của
hàng đợi trong trường hợp: “giá trị của H đúng bằng kích thước của
mảng” sẽ:
A.Tăng H lên 1 đơn vị
B.Giảm H đi 1 đơn vị
C.Giá trị H được gán bằng 1
D.Không thực hiện được
Câu Hỏi 6Việc cài đặt hàng đợi bằng mảng được thực hiện qua khai báo dưới
đây:
#define max N
typedef int ELEMENT;
struct QUEUE_ARRAY


{
ELEMENT ele[max];
int capacity, H, T, S;
} q;
Ý nghĩa đúng nhất của q là:
A.Độ lớn cực đại của hàng đợi
B.Tên của hàng đợi
C.Chứa các phần tử của hàng đợi

D.Kiểu dữ liệu của các phần tử trong hàng đợi
Câu Hỏi 7 Khi cài đặt hàng đợi bằng mảng, nếu ta đặt tên các biến như sau: biến
T thể hiện vị trí đi, biến H thể hiện vị trí đầu. Thao tác thêm 1 phần tử vào hàng
đợi trong trường hợp: “giá trị của T đúng bằng kích thước của mảng trong khi số
lượng phần tử của hàng đợi vẫn nhỏ hơn kích thước của mảng” sẽ:
ATăng T lên 1 đơn vị
B.Giảm T đi 1 đơn vị
C.Giá trị T được gán bằng 1
D.Không thực hiện được
Câu Hỏi 8
Việc cài đặt hàng đợi bằng mảng được thực hiện qua khai báo dưới đây:
#define max N
typedef int ELEMENT;
struct QUEUE_ARRAY
{
ELEMENT ele[max];
int capacity, H, T, S ;
} q;
Ý nghĩa đúng nhất của ELEMENT là:
A.Chứa các phần tử của Hàng đợi
B.Số phần tử hiện thời của Hàng đợi
C.Vị trí đỉnh hiện tại của Hàng đợi
D.Kiểu dữ liệu của các phần tử trong Hàng đợi
Câu Hỏi 9Việc cài đặt hàng đợi bằng mảng được thực hiện qua khai báo dưới
đây:
#define max N
typedef int ELEMENT;
struct QUEUE_ARRAY
{
ELEMENT ele[max];

int capacity, H, T, S;
} q;
Ý nghĩa đúng nhất của S là:


A.Độ lớn cực đại của hàng đợi
B.Số phần tử hiện thời của hàng đợi
C.Vị trí đỉnh hiện tại của hàng đợi
D.Kiểu dữ liệu của các phần tử trong hàng đợi
Câu Hỏi 10 Cấu trúc dữ liệu nào tương ứng với nguyên lý FIFO
A.Queue
B.Linked List
C.Tree
D.Stack
Câu 11.Khi cài đặt hàng đợi bằng mảng, nếu ta đặt tên các biến như sau: biến
T thể hiện vị trí đi, biến H thể hiện vị trí đầu. Thao tác thêm 1 phần tử vào
hàng đợi sẽ:
A.Tăng H lên 1 đơn vị
B.Tăng T lên 1 đơn vị
C.Giảm T đi 1 đơn vị
D.Giảm H đi 1 đơn vị
Câu Hỏi 12Việc lấy một phần tử từ hàng đợi được thực hiện bằng đoạn mã
dưới đây:
ELEMENT DEQUEUE(QUEUE_ARRAY q)
{
ELEMENT e;
if (IS_EMPTY(q)!= 0)
printf("hang doi rong khong the lay phan tu ra");
else
{

e = q.ele[q.H];
q.H =q.H + 1;
q.S = ........;
if (q.H == q.capacity)
q.H = 0;
}
return e;
}
Hãy lựa chọn câu trả lời đúng nhất nội dung điền vào chỗ trống (.........) của đoạn
mã trên:
A.q.H - 1
B.q.H + 1
C.q.S - 1
D.q.S + 1
Câu Hỏi 13Cấu trúc dữ liệu biểu diễn hàng đợi bằng danh sách liên kết
typedef struct QElement


{T Key;
QElement *Next;
} QOneElement;
typedef QElement *QType;
Cấu trúc dữ liệu quản lý hàng đợi bằng hai phần tử đầu (Front) và cuối (Rear):
typedef struct QPElement
{QType Font;
QType Rear;
} SQUEUE;
SQUEUE SQList;
Thêm phần tử vào sau phần tử Rear. Giả sử dữ liệu đưa vào hàng đợi là NewData,
mã giả được mô tả như sau:

B1: NewElement = Khởi tạo nút mới có thành phần NewData
B2: IF (NewElement == NULL) Thực hiện BKT
B3: IF (SQList.Front == NULL) // hàng đợi đang rỗng
B3.1: SQList.Front = SQList.Rear = NewElement
B3.2: Thực hiện BKT
B4: …………………………………………..
A.B4: SQList.Front->Next = NewElement
B5: SQList.Front = NewElement
B.B4: SQList.Rear->Next = NewElement
B5: SQList.Rear = NewElement
C.B4: NewElement = SQList.Rear->Next
B5: SQList.Rear = NewElement
D.B4: NewElement = SQList.Front->Next
B5: SQList.Font = NewElement
Câu Hỏi 14Khi lấy ra một phần tử của hàng đợi thì phần tử đó ở vị trí:
A.Đầu tiên của hàng đợi
B.Cuối cùng của hàng đợi
C.Bất kỳ vị trí nào
D.Khơng thể lấy ra một phần tử nào của hàng đợi
Câu Hỏi 5
Cho đồ thị như hình dưới đây, việc tìm đường đi ngắn nhất từ đỉnh 1 đến đỉnh
7 ta sử dụng cấu trúc dữ liệu hàng đợi, các đỉnh được thăm theo thứ tự từ
điển và ta đặt tên các biến như sau: biến T thể hiện vị trí đi, biến H thể hiện vị
trí đầu, biến S thể hiện số lượng phần tử. Giá trị lớn nhất của S là bao nhiêu?
A.3
B.4
C.5
D.6



Câu Hỏi 6
Để cài đặt thàng đợi bằng danh sách liên kết, trước tiên ta phải định nghĩa
kiểu phần tử cho danh sách. Mỗi phần tử của danh sách liên kết phải có bao
nhiêu trường:
A.1
B.2
C.3
D.4
Câu trả lời đúng là: 2
Câu Hỏi 7Cấu trúc dữ liệu nào khi cài đặt bằng mảng ta phải cần 2 biến vị trí
để quản lý danh sách các phần tử
A.Ngăn xếp
B.Danh sách
C.Cây
D.Hàng đợi
Câu Hỏi 18Việc kiểm tra hàng đợi có rỗng khơng được thực hiện bằng đoạn
mã dưới đây:
int IS_EMPTY(QUEUE_ARRAY q)
{
if (………)
return 1;
else
return 0;
}
Hãy lựa chọn câu trả lời đúng nhất nội dung điền vào chỗ trống (.........) của đoạn
mã trên:
A.S == 0
B.q.S == 0
C.q.S == 1
D.q.S == -1

Câu Hỏi 19Khi cài đặt hàng đợi bằng mảng, nếu ta đặt tên các biến như
sau: biến T thể hiện vị trí đi, biến H thể hiện vị trí đầu. Thao tác thêm 1 phần
tử vào hàng đợi trong trường hợp: “giá trị của T đúng bằng kích thước của mảng
trong khi số lượng phần tử của hàng đợi vẫn nhỏ hơn kích thước của mảng” sẽ:
A.Tăng T lên 1 đơn vị
B.Giảm T đi 1 đơn vị
C.Giá trị T được gán bằng 1
D.Không thực hiện được
Câu Hỏi 20Việc cài đặt hàng đợi bằng mảng được thực hiện qua khai báo
dưới đây:
#define max N


typedef int ELEMENT;
struct QUEUE_ARRAY
{
ELEMENT ele[max];
int capacity, H, T, S ;
} q;
Ý nghĩa đúng nhất của ELEMENT là:
A.Chứa các phần tử của Hàng đợi
B.Số phần tử hiện thời của Hàng đợi
C.Vị trí đỉnh hiện tại của Hàng đợi
D.Kiểu dữ liệu của các phần tử trong Hàng đợi

TUẦN 5
Câu 1; Cho một biểu diễn cây như sau:
A.0
B.1
C2

D.3
Câu Hỏi 2
Đỉnh trong của một cây là đỉnh như thế nào?
A.Là đỉnh khơng có con.
B.Là đỉnh khơng có cha.
C.Là đỉnh có ít nhất 1 con.
D.Là đỉnh có 1 hoặc 2 con
Câu Hỏi 3
Cho một biểu diễn cây như sau:
Đâu là tập các lá của cây:
A.{3, 4, 5, 6, 7, 8, 9}B.
B{3, 4, 5, 6, 8, 9}
C.{4, 5, 6, 7, 8, 9}
D.{4, 5, 6, 8, 9}
Câu Hỏi 4
Có bao nhiêu thao tác trên cây nhị phân?
A.Có 1 thao tác.
B.Có 3 thao tác.
C.Có 5 thao tác.
D.Có 7 thao tác
Câu Hỏi 5


Các đỉnh của cây có bậc bằng 0 thì được gọi là gì?
A.Là Gốc.
B.Là Lá.
C.Là Ngọn
D.Là Cầu.
Câu Hỏi 6
Hãy cho biết độ cao của một cây được xác định như thế nào?

A.Là độ dài đường đi từ gốc tới một lá bất kỳ.
B.Là độ dài đường đi dài nhất từ gốc tới lá.
C.Là độ dài đường đi từ một lá bất kỳ đến gốc.
D.Khơng có khái niệm này
Câu Hỏi 7
Cho cây nhị phân như sau
Với cách duyệt Inorder (Left – Root – Right) cho ra kết quả là dãy nào?
A.1325540169112034509022
B.1321692011405522905034
C.3455213401116920509022
D.3450902255401120169213
Câu Hỏi 8
Cho một biểu diễn cây như sau:
Bậc của đỉnh e là
A.1
B.2
C.3
D.0
Câu Hỏi 9
Phương pháp Minimax với cơ chế cắt tỉa alpha-beta sẽ loại bỏ những nhánh
nào của cây trò chơi?A.
A. Những nhánh sẽ đem lại kết quả tốt nhất cho đối thủ.
B.Những nhánh không cần thiết cho việc đánh giá.
C.Những nhánh thừa của cây trò chơi.
D.Những nhánh quá lớn của cây trò chơi.
Câu Hỏi 10
Đâu là phương pháp duyệt hậu thứ tự một cây nhị phân?
A.Nút gốc được duyệt trước sau đó duyệt đến cây con bên trái rồi tới cây con bên
phải.
B.Duyệt cây con bên trái sau đó tới nút gốc rồi tới cây con bên phải.

C.Nút gốc được duyệt trước sau đó duyệt đến cây con bên phải rồi tới cây con bên
trái.
D.Duyệt cây con bên phải sau đó tới cây con bên trái rồi tới nút gốc.


Câu 11.Các phần tử của cây thì được gọi là gì?
A.Là nút.
B.Là lá.
C.Là cung.
D.Là cạnh
Câu12.Quan hệ phân cấp giữa các nút trong cây được gọi là quan hệ gì?
AQuan hệ anh – em.
B.Quan hệ chú – cháu.
C.Quan hệ cha – con.
D.Khơng có quan hệ.
Câu 13. Hãy cho biết kết quả duyệt trung thứ tự (duyệt nút gốc giữa) của cây
nhị phân sau.
A.ABCDE.
B.BACDE.
C.BADCE
D.BDECA.

Bài luyện tập tuần 6
Câu 1. Cho thuật toán tìm kiếm sau, với điều kiện các giá trị của mảng đã
được sắp theo thứ tự tăng dần:typedef <kiểu_dữ_liệu> KeyType;int
LinearSearch(KeyType X, dataArray R,int n){int i;for(i = 0;i < n;i++){if(R[i]==
X) return(i);else if(X < R[i]) return(–1);}return(–1);}
Chọn câu đúng nhất trong trường hợp xấu nhất khi khơng tìm thấy phần tử nào có
giá trị bằng X:
A.Số phép so sánh: Smax = 3N+1

B.Số phép so sánh: Smax = 2N
C.Số phép so sánh: Smax = 2N+1
D.Số phép so sánh: Smax = 3N
Câu 2. Đâu là một điều kiện của việc xóa một nút của cây nhị phân tìm kiếm?
A.Cây nhận được sau khi xóa là cây nhị phân đầy đủ
B.Cây nhận được sau khi xóa là cây nhị phân tìm kiếm
C.Cây nhận được sau khi xóa là cây nhị phân hồn chỉnh
D.Cây nhận được sau khi xóa là cây nhị phân được sắp xếp
Câu 3. Đoạn mã giả dưới đây mơ tả thuật tốn gì?
Thuật toán:B1: k = 0B2: IF (M[k] != X) AND (k < N)B2.1: k++B2.2: Lặp lại B2
B3: IF k < NThông báo tìm thấy tại vị trí kB4: ELSE. Khơng tìm thấy.B5: Kết
thúc
A.Tìm nhị phân phần tử có giá trị X
B.Tìm phần tử nhỏ nhất của mảng M bao gồm N phần tử
C.Tìm tuyến tính phần tử có giá trị X
D.Tìm phần tử lớn nhất của mảng M.


Câu 4. Cho thuật tốn tìm kiếm trên cây nhị phân tìm kiếm như sau:
Bước 1: đặt con trỏ Root = BST;
Bước 2: nếu (Root = NULL) hoặc (Root –> infor = X)
Kết thúc thuật toán;
Bước 3: ngược lại:nếu (Root –> infor > X)Root = Root –> left;//tìm X ở cây con
bên trái
Bước 4: ngược lại nếu(Root –> infor < X)Root = Root –> right;//tìm X ở cây con
bên phải
Bước 5: lặp lại bước 2;Và cây nhị phân tìm kiếm sau:

Khố cần tìm kiếm X = 40 thì số lần thực hiện Bước 2 là?
A.1

B.2
C.3
D.4
Câu 5. Cho thuật tốn tìm kiếm nhị phân sau:
Bước 1: đặt First = 0 và Last = n – 1;
Bước 2: Found = –1;//Found là biến lưu vị trí tìm thấy X trong mảng
Bước 3: while((First <= Last)&&(Found == –1))
{ Mid =(First + Last)/2;if(X < R[Mid]) Last = Mid – 1;else if(X > R[Mid]) First =
Mid + 1;else Found = Mid;}
Đâu là điều kiện của mảng R[] để thực hiện thuật toán?
A.Được sắp tăng
B.Được sắp giảm
C.Giá trị các phần tử <=(First + Last)/2
D.Số phần tử > (First + Last)
Câu 6. Đâu là cây nhị phân tìm kiếm trong các cây nhị phân sau?
A.
B.
C.
D.
Câu 7. Xét thủ tục sau:int TimKiemNP (int M[], int First, int Last, int X){


if (First > Last)return (-1);int Mid = (First + Last)/2;if (X == M[Mid])
return (Mid);if (X < M[Mid])return(TimKiemNP (M, First, Mid – 1, X));else
return(TimKiemNP (M, Mid + 1, Last, X));}
Lựa chọn câu đúng nhất để mơ tả thủ tục trên
A.Hàm tìm kiếm phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ First đến
chỉ số Last
B.Hàm tìm kiếm đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ
số từ First đến chỉ số Last

C.Hàm tìm kiếm đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ số từ
Last đến chỉ số First
D.Hàm tìm kiếm khơng đệ quy phần tử có giá trị là X trên mảng các phần tử từ chỉ
số từ Last đến chỉ số First
Câu 8. Cho thuật tốn tìm kiếm sau
typedef <kiểu_dữ_liệu> KeyType;int Sequential_Search(dataArray R,KeyType
X,int n);{int i;i=0;while((R[i]!= X)&&(i < n)){i++;}if(i < n) return (1);else
return(–1);}
Khi đó, nếu tìm giá trị X = 34 trong mảng sau: 11, 23, 33, 34, 35, 62,71, 80, 95,
100
Chọn câu đúng nhất cho số phép so sánh trong vòng lặp while:
A.Số phép so sánh: S = 7
B.Số phép so sánh: S = 8
C.Số phép so sánh: S = 9
D.Số phép so sánh: S= 10
Câu 9. Khi xóa một nút của cây nhị phân tìm kiếm, trường hợp nút cần xóa là
nút có đủ hai nút gốc cây con. Đâu là định nghĩa đúng nhất cho khái niệm
"nút tiền nhiệm"?
A.Nút cực phải của cây con trái
B.Nút cực trái của cây con phải
C.Nút có khóa nhỏ nhất
D.Nút có khóa lớn nhất
Câu 10. Cho thuật tốn tìm kiếm sau, với điều kiện các giá trị của mảng đã
được sắp theo thứ tự tăng dần:
typedef <kiểu_dữ_liệu> KeyType;
int LinearSearch(KeyType X, dataArray R,int n)
{int i;for(i = 0;i < n;i++){if(R[i]== X) return(i);else if(X < R[i]) return(–
1);}return(–1);}Khi đó, nếu tìm giá trị X = 85 trong mảng được sắp xếp theo thứ tự
tăng dần như sau:10, 20, 30, 40, 50, 60,70, 80, 90, 100
Chọn câu đúng nhất trong trường hợp xấu nhất khi không tìm thấy phần tử nào có

giá trị bằng X
A.Số phép so sánh: Smax = 9
B.Số phép so sánh: Smax = 15
C.Số phép so sánh: Smax = 27
D.Số phép so sánh: Smax = 30


×