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
Trang 1Câu Hỏi 1: Kiểu dữ liệu con trỏ được dùng để làm gì?
A.Được dùng để lưu vị trí con trỏ
B.Được dùng để lưu giá trị của ô nhớ
C.Được dùng để trỏ tới một giá trị
D.Đượ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 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 cấu trúc bản ghi B.Kiểu tệp tin
Câu Hỏi 3: Hã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
Câu Hỏi 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à tập hợp các lệnh xử lý dữ liệu
D.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
Câu Hỏi 5: Kiể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 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.Là kiểu dữ liệu giúp cho việc lập trình dễ dàng hơn
D.Là kiểu dữ liệu không đòi hỏi kĩ thuật cao trong xử lý
Câu Hỏi 6: 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ần sát với kiểu giá trị của các thông tin đó trong thực tế
Trang 2A.Là địa chỉ vị trí của con trỏ
B.Là giá trị của các kiểu dữ liệu khác
C.Là giá trị tại một vùng bộ nhớ
D.Là địa chỉ đến một vùng bộ nhớ nhất định
Câu Hỏi 8: 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 tuần tự
C.Kiểu truy cập song song
D.Kiểu truy cập nhanh
Câu Hỏi 9: Hã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ị
B.Là kiểu dữ liệu do hệ thống tự sinh ra
C.Là kiểu dữ liệu không có giới hạn về độ lớn
D.Là kiểu dữ liệu mới do người dùng tự định nghĩa
Câu Hỏi 10: Hãy cho biết kết quả của phép MOD hai số nguyên có kiểu gì?
A.Kiểu số thực
B.Kiểu ký tự
C.Kiểu logic
D.Kiểu số nguyên
Câu Hỏi 11: Kiể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 không đòi hỏi kĩ thuật cao trong xử lý
D 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 Hỏi 2: Kiểu dữ liệu con trỏ được dùng để làm gì?
A.Được dùng để lưu vị trí con 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 để trỏ tới một giá trị
D.Được dùng để lưu giá trị của ô nhớ
Câu Hỏi 3: Đâu là một trong những tiêu chí khi chọn ngôn ngữ diễn đạt giải thuật ?
A.Chọn ngôn ngữ nào bạn thích
B.Gần với ngôn ngữ lập trình hiện có
C.Ngôn ngữ tiếng Việt
D.Ngôn ngữ càng gần với ngôn ngữ máy càng tốt
Trang 3Câu Hỏi 4: Hãy cho biết ý nghĩa của kiểu dữ liệu logic (BOOLEAN)
A.Dùng trong các phép so sánh
B.Dùng để biểu diễn các giá trị logic bao gồm 2 giá trị đúng (true) và sai (false)
C.Dùng trong tính toán số học
D.Dùng trong các phép toán logic
Câu Hỏi 5: Hãy cho biết kết quả của phép MOD hai số nguyên có kiểu gì?
Câu Hỏi 6: Kiểu dữ liệu nào thuộc loại kiểu dữ liệu cơ bản?
Câu Hỏi 7: Hãy cho biết giá trị của “con trỏ” là gì?
A.Là giá trị tại một vùng bộ nhớ
B.Là địa chỉ đến một vùng bộ nhớ nhất định
C.Là địa chỉ vị trí của con trỏ
D.Là giá trị của các kiểu dữ liệu khác
Câu Hỏi 8: 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 nhỏ càng tốt
B.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.Kiểu dữ liệu càng lớn càng tốt
D.Có thể chọn bất cứ kiểu dữ liệu nào
Câu Hỏi 9: Hãy cho biết kiểu dữ liệu trừu tượng là gì?
A.Là kiểu dữ liệu mới do người dùng tự định nghĩa
B.Là kiểu dữ liệu không có giới hạn về độ lớn
C.Là kiểu dữ liệu đa năng phù hợp với mọi loại giá trị
D.Là kiểu dữ liệu do hệ thống tự sinh ra
Câu Hỏi 10: Chọn định nghĩa đúng nhất cho từ Giải thuật?
A.Là tập hợp các lệnh xử lý dữ liệu
B.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
C.Là các giải thích về các thuật ngữ trong tin học
D.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
…
Trang 4Hãy chọn mô tả đúng nhất cho khai báo NodeType *next
A.Vùng liên kết quản lý địa chỉ phần tử kế tiếp
B.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 C.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 D.Con trỏ trỏ tới phần dữ liệu
Câu Hỏi 2: Đị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à 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
C.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ớ D.Danh sách liên kết là cấu trúc dữ liệu tự định nghĩa
Câu Hỏi 3: 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ử mà giữa chúng có một mối liên hệ nào đó
B.Danh sách là tập hợp các phần tử có cùng giá trị
C.Danh sách là tập hợp các phần tử có cùng kiểu dữ liệu
D.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 4: Một danh sách rỗng khi:
A.độ dài của danh sách không xác định
B.độ dài của danh sách bằng 1
C.tổng giá trị các phần tử của danh sách bằng 0
D.độ dài của danh sách bằng 0
Câu Hỏi 5: Biểu diễn danh sách bằng mảng được mô tả như sau:
Trang 5Câu Hỏi 7: Trong việc ứng dụng danh sách liên kết để tính toá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
A.O(n2) B.O(n) C.O(2n) D.O(n.log2(n))
Câu Hỏi 1: Đị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 tự định nghĩa
B.Danh sách liên kết là cấu trúc dữ liệu dạng cây
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ớ
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ử mà giữa chúng có một mối liên hệ nào đó
Trang 6Câu Hỏi 4: Lự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, 01 với phần tử trước và 01 với phần tử sau nó 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
để 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?
Điều kiện danh sách đầy là:
A.Size.List = Max_Size B.List = Max_Size
Câu Hỏi 10: Vớ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;
Trang 7} 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)
B.Thêm một phần tử vào danh sách
C.Duyệt qua các nút trong danh sách và hiển thị nội dung của mỗi nút
D.Xoá một phần tử khỏi danh sách
Câu Hỏi 9: Đị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 địa chỉ vùng nhớ của phần tử đầu tiên trong danh sách liên kết đôi B.Con trỏ trỏ tới phần dữ liệu
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.Vùng liên kết quản lý địa chỉ phần tử kế tiếp
Trang 8A.ab + cde /-* B.ab *+ cde /-
C.abc *+ de /- D.ab + cde */-
Câu Hỏi 3: Việc cài đặt ngăn xếp bằng mảng được thực hiện qua khai báo dưới đây:
Ý 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.Kiểu dữ liệu của các phần tử trong Stack D.Vị trí đỉnh hiện tại của Stack
Câu Hỏi 4: 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 toá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?
Câu Hỏi 5: 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 6: Cấu trúc dữ liệu nào tương ứng với nguyên lý LIFO
Câu Hỏi 7: Cho 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à:
Trang 9Câu Hỏi 8: 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 toá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?
Câu Hỏi 9: Trong 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?
Câu Hỏi 10: Việc cài đặt ngăn xếp bằng mảng được thực hiện qua khai báo dưới đây:
Trang 10Ý nghĩa đúng nhất của ELEMENT là:
A.Số phần tử hiện thời của Hàng đợi
B.Chứa các phần tử của Hàng đợi
C.Kiểu dữ liệu của các phần tử trong Hàng đợi
D.Vị trí đỉnh hiện tại của Hàng đợi
Câu Hỏi 2: 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)
Trang 11B.Độ lớn cực đại của hàng đợi
C.Kiểu dữ liệu của các phần tử trong hàng đợi
D.Số phần tử hiện thời của hàng đợi
Câu Hỏi 4: Việ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)
A.Tăng H lên 1 đơn vị B.Giảm H đi 1 đơn vị
C.Không thực hiện được D.Giá trị H được gán bằng 1
Câu Hỏi 6: Việ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)
Trang 12A.Giá trị T được gán bằng 1 B.Không thực hiện được
C.Tăng T lên 1 đơn vị D.Giảm T đi 1 đơn vị
Câu Hỏi 8: 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í đuô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 T lên 1 đơn vị B.Tăng H 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 9: Khi lấy ra một phần tử của hàng đợi thì phần tử đó ở vị trí:
A.Cuối cùng của hàng đợi
B.Bất kỳ vị trí nào
C.Không thể lấy ra một phần tử nào của hàng đợi
D.Đầu tiên của hàng đợi
Câu Hỏi 10: Để 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.Độ lớn cực đại của hàng đợi
B.Tên của hàng đợi
C.Kiểu dữ liệu của các phần tử trong hàng đợi
D.Chứa các phần tử của hàng đợi
Câu Hỏi 8: Cấu trúc dữ liệu nào tương ứng với nguyên lý FIFO
Trang 13Câu Hỏi 9: 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í đuô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.Giảm T đi 1 đơn vị
C.Giảm H đi 1 đơn vị D.Tăng T lên 1 đơn vị
Câu Hỏi 10: Cấ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
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.Kiểu dữ liệu của các phần tử trong hàng đợi
D.Vị trí đỉnh hiện tại của hàng đợi
Trang 14
TUẦN 5
Câu Hỏi 1: Cho một biểu diễn cây như sau:
Bậc của đỉnh e là
Câu Hỏi 2: Có bao nhiêu thao tác trên cây nhị phân?
A.Có 3 thao tác B.Có 7 thao tác
Câu Hỏi 3: Cho một biểu diễn cây như sau:
Mức của đỉnh 3 là :
Câu Hỏi 4: Đỉnh trong của một cây là đỉnh như thế nào?
A.Là đỉnh có 1 hoặc 2 con B.Là đỉnh không có con C.Là đỉnh không có cha D.Là đỉnh có ít nhất 1 con
Câu Hỏi 5: Cho một biểu diễn cây như sau:
Đâu là tập các lá của cây:
C.{4, 5, 6, 7, 8, 9} D.{3, 4, 5, 6, 7, 8, 9}
Trang 15Câ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: Các phần tử của cây thì được gọi là gì?
Câu Hỏi 8: Các đỉnh của cây có bậc bằng 0 thì được gọi là gì?
A.Là Cầu B.Là Ngọn C.Là Gốc D.Là Lá
Câu Hỏi 9: Đâu là phương pháp duyệt hậu thứ tự một cây nhị phân?
A.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
B.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 C.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
D.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
Câu Hỏi 10: Quan hệ phân cấp giữa các nút trong cây được gọi là quan hệ gì?
A.Quan hệ anh – em B.Quan hệ cha – con
C.Quan hệ chú – cháu D.Không có quan hệ
Câu Hỏi 8:
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
Trang 16TUẦN 6
Câu Hỏi 1: Đâ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 hoàn chỉnh
B.Cây nhận được sau khi xóa là cây nhị phân đầy đủ
C.Cây nhận được sau khi xóa là cây nhị phân được sắp xếp
D.Cây nhận được sau khi xóa là cây nhị phân tìm kiếm
Câu Hỏi 2: Cho thuật toá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.Số phần tử > (First + Last)
C.Được sắp giảm D.Giá trị các phần tử <=(First + Last)/2
Câu Hỏi 3: 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)
Trang 17A.Số phép so sánh: Smax = 27 B.Số phép so sánh: Smax = 15 C.Số phép so sánh: Smax = 30 D.Số phép so sánh: Smax = 9
Câu Hỏi 4: 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ó khóa lớn nhất B.Nút cực phải của cây con trái
C.Nút có khóa nhỏ nhất D.Nút cực trái của cây con phải
Câu Hỏi 5: Cho thuật toán tìm kiếm sau
typedef <kiểu_dữ_liệu> KeyType;
int Sequential_Search(dataArray R,KeyType X,int n);
Câu Hỏi 6: Cho thuật toán sau
int LinearSearch (float M[], int N, float X)