TRƯỜNG ĐẠI HỌC BÁCH KHOA Họ tên KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH MSSV ————————————————— ĐỀ KIỂM TRA HỌC KỲ 1 NIÊN KHÓA 2015 2016 Chuyên ngành Kỹ thuật máy tính Môn thi Cấu trúc dữ liệu và giải thuật[.]
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA Họ tên:
—————————————————
ĐỀ KIỂM TRA HỌC KỲ 1 - NIÊN KHÓA 2015-2016
Chuyên ngành: Kỹ thuật máy tính
Môn thi: Cấu trúc dữ liệu và giải thuật Ngày thi: 22/12/2015 Thời gian làm bài: 120 phút
Đề thi số: 1511 Đề thi gồm 5 trang Được phép dùng tài liệu viết tay trên 1 tờ A4
Sinh viên phải ghi họ tên và mã số sinh viên vào đề thi Sinh viên phải nộp lại đề thi
Phần I: TRẮC NGHIỆM Sinh viên làm trên đề thi bằng cách gạch chéo câu trả lời đúng nhất
Phần II: ĐIỀN CHỖ TRỐNG Sinh viên làm trực tiếp trên đề thi
Phần III: VIẾT CHƯƠNG TRÌNH Sinh viên làm trên giấy thi
I Các câu hỏi trắc nghiệm (4 điểm)
Câu 1 Cho đoạn chương trình:
i = 1;
while (i <= n)
i = i * 3;
Đoạn chương trình trên có độ phức tạp (Big-O) là:
C O(log3n)
D O(n/3) Câu 2 Cho hàm:
int fun(int x, int y) {
if(x > y) return -1;
else if(x == y) return 1;
else return x * fun(x + 1, y);
}
Lời gọi hàm fun(4, 7) trả về kết quả bằng:
D 160 Câu 3 Với mảng có n phần tử, việc truy xuất phần tử thứ i có độ phức tạp là
D O(i − 1) Câu 4 Một mảng có n phần tử, khi xóa phần tử ở vị trí i (0 ≤ i ≤ n − 1), thì cần phải di chuyển bao nhiêu phần tử:
D i Câu 5 Với danh sách liên kết có n phần tử, việc truy xuất phần tử thứ i có độ phức tạp là
D O(i − 1) Câu 6 Giả sử p trỏ vào một nút trong danh sách liên kết đơn và pP re trỏ đến nút trước nó, bây giờ yêu cầu xóa nút
mà p trỏ đến, thì thao tác xóa là:
(Ghi chú: p → link trỏ đến phần tử tiếp theo của p)
A pP re → link = p → link; delete(p);
B delete(p); pP re → link = p → link;
D Cả A, B đều sai Câu 7 Giá trị của biểu thức tiền tố + + / + 4 6 2 ∗ 3 / 8 2 3 bằng:
D Biểu thức không hợp lệ Câu 8 Độ cao nhỏ nhất của một cây nhị phân có 79 nút là:
D 79 Câu 9 Số nút trong cây nhị phân đầy đủ có 8 mức là:
D 256
Trang 2Câu 10 Cho cây như hình vẽ dưới đây:
A
Duyệt tiền thứ tự (preorder traversal) sẽ cho kết quả:
B A B C D E F G H I J K
D A B D E G H I C F J K Câu 11 Cho biết những nhận định nào sau đây là SAI về cây AVL
1) Cây AVL là cây tìm kiếm nhị phân (Binary Search Tree)
2) Cây AVL là cây cân bằng
3) Cây AVL là cây đầy đủ hoặc gần đầy đủ
B Nhận định 2 sai
D Không có nhận định nào sai Câu 12 Cho biết những nhận định nào sau đây là ĐÚNG về cây B (B-Tree) bậc m
1) Mỗi nút (ngoại trừ nút lá) phải có ít nhất 2 cây con không rỗng
2) Mỗi nút có nhiều nhất m - 1 dữ liệu
3) Tất cả nút lá nằm trên cùng một mức
B Chỉ có 2 và 3 đúng
D Chỉ có 1 và 2 đúng Câu 13 Giả sử dùng dãy số để biểu diễn heap (max-heap), hãy cho biết trong những dãy số dưới đây, dãy nào là biểu
diễn của một heap:
A 2, 7, 26, 25, 19, 17, 1, 90, 3, 36
B 90, 36, 17, 25, 26, 7, 1, 2, 3, 19
C 19, 7, 26, 2, 17, 25, 90, 1, 3, 36
D 1, 2, 3, 7, 17, 19, 25, 26, 36, 90 Câu 14 Bảng băm (hash table) có kích thước m = 7, không gian địa chỉ là [0 6], hàm băm (hash function) h(k) = k % 7,
sử dụng phương pháp thăm dò bình phương (quadratic probing) để giải quyết đụng độ Giả sử bảng băm đã có
3 phần tử là 8, 3, 18 Muốn chèn thêm phần tử có giá trị 38 vào bảng băm, vậy địa chỉ của phần tử này là:
D 6 Câu 15 Sắp xếp dãy (20, 12, 7, 1, 3) theo thứ tự tăng dần, dãy số biến đổi như sau trong quá trình sắp xếp:
(20, 12, 7, 1, 3) → (1, 12, 7, 20, 3) → (1, 3, 7, 20, 12) → (1, 3, 7, 12, 20)
Hãy cho biết phương pháp sắp xếp nào được sử dụng:
A Sắp xếp lựa chọn đơn giản (Straight Selection
Sort)
B Sắp xếp nổi bọt (Bubble Sort)
D Sắp xếp chèn đơn giản (Straight Insertion Sort)
Câu 16 Nhận định nào dưới đây là ĐÚNG
A Duyệt đồ thị là viếng thăm mỗi cạnh của đồ thị duy nhất một lần
B Để duyệt đồ thị có hướng, phải sử dụng phương pháp duyệt theo chiều sâu
C Duyệt đồ thị theo chiều sâu là quá trình đệ quy
D Duyệt đồ thị theo chiều rộng nhanh hơn duyệt đồ thị theo chiều sâu
Trang 3II Điền vào chỗ trống (3 điểm)
Câu 17 Hãy nêu ưu điểm của danh sách liên kết (linked list) so với mảng (array)
- Việc chèn và xóa dữ liệu được thao tác nhanh chóng, với độ phức tạp O(1)
- Không giới hạn số phần tử của dãy
Câu 18 Trong danh sách liên kết kép, khi xóa nút mà con trỏ p trỏ đến, cần phải cập nhật con trỏ như thế nào?
p → previous → next = p → next
p → next → previous = p → previous
Câu 19 Chuyển đổi biểu thức trung tố (infix expression) sau sang dạng hậu tố (postfix):
(A – 2 * (B + C) – D * E) * F
A 2 B C + * - D E * - F *
Câu 20 Giả sử dùng 1 stack S và 1 queue Q để chứa các số nguyên Hãy vẽ hình ảnh của S và Q sau
khi thực hiện các thao tác sau:
S = Stack(5, 12, 2, 3)
Q = Queue(8, 12)
Câu 21 Cho cây nhị phân có 8 nút Duyệt hậu thứ tự (postorder) cho kết quả FECHGDBA, duyệt trung
thứ tự (inorder) cho kết quả FCEABHDG Hãy vẽ cây đó.
A
Câu 22 Hãy vẽ cây tìm kiếm nhị phân (BST) bằng cách chèn lần lượt các giá trị sau:
37, 11, 8, 74, 61, 30, 38, 67, 85, 14 (chỉ cần vẽ kết quả cuối cùng)
Trang 4Câu 23 Cây kết quả của câu trên (câu 22) có phải là cây AVL không?Phải
Câu 24 Nếu cây kết quả của câu 22 là cây AVL, chèn vào cây thêm một nút có giá trị là 68 và tái cân bằng lại cây (chỉ
cần vẽ kết quả cuối cùng)
37
Câu 25 Xây dựng heap (max-heap) từ dãy số sau: 45, 3, 63, 53, 39, 57, 54, 62 (có thể vẽ heap dưới dạng cây nhị phân
hoặc biểu diễn dưới dạng mảng, chỉ cần ghi lại kết quả cuối cùng)
63, 62, 57, 53, 39, 45, 54, 3
Câu 26 Cho biết kết quả duyệt theo chiều sâu của đồ thị sau, biết rằng bắt đầu duyệt từ đỉnh S Lưu ý, trong trường
hợp nhiều đỉnh có thể được chọn, duyệt theo thứ tự trong bảng chữ cái
S
A
B
C
D
E
F
G
H
S A C E F G H B D
Câu 27 Dùng giải thuật Prim hoặc Kruskal để tìm cây khung nhỏ nhất (MST) của đồ thị sau (chỉ cần vẽ lại kết quả
cuối cùng là cây khung)
Trang 5B
C
D
E
F
7
6
2 5
4 2 4
2
6
3
4
A
B
C
D
E
F
6
2
2 2
3
Câu 28 Cho biết tổng trọng số của cây khung tìm được trong câu 27 là bao nhiêu?19
III Viết chương trình (4 điểm) Sinh viên làm trên giấy thi.
Sinh viên phải trình bày ý tưởng của chương trình bằng cách viết các bình luận (comments) trên mỗi đoạn code của chương trình Chọn một ngôn ngữ (C hoặc C++) để thực hiện Có thể dùng pseudocode
Câu 29 Một chuỗi ký tự (string) được gọi là palindrome nếu nó không thay đổi khi đọc theo thứ tự ngược lại
Ví dụ: omo, anna
Hãy hiện thực một hàm (function) để kiểm tra xem một chuỗi ký tự có phải là palindrome hay không? (1 điểm)
Câu 30 Chỉ ra cấu trúc dữ liệu của cây và nút của cây (0.5 điểm)
Câu 31 Hãy hiện thực một hàm để trả về một cây nhị phân là đối xứng của cây nhị phân đầu vào (1.5 điểm)
Ví dụ:
B C
D E F
Câu 32 Bonus: (1 điểm)
Hãy đề xuất một cấu trúc dữ liệu để có thể hiện thực hàm trả về một cây là đối xứng của cây m-phân đầu vào Một ví dụ với m = 3:
B C
D
E F
G
Trang 6TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
—————————————————
ĐÁP ÁN ĐỀ THI KIỂM TRA HỌC KỲ 1 - NIÊN KHÓA 2015 - 2016
Chuyên ngành: Kỹ thuật Máy tính Môn thi: Cấu trúc dữ liệu và giải thuật Thời gian làm bài: 120 phút
Không được phép dùng tài liệu Được phép dùng tài liệu viết tay trên 1 tờ A4
Đề thi số: 1511
I Các câu hỏi trắc nghiệm (4 điểm)
Câu 1
C
Câu 2
B
Câu 3
B
Câu 4
C Câu 5
C Câu 6
A
Câu 7
B Câu 8
B Câu 9
C
Câu 10
A Câu 11
C Câu 12
A
Câu 13
B Câu 14
A Câu 15
A
Câu 16
C
II Điền vào chỗ trống (3 điểm)
Câu 17
Câu 18
Câu 19 Câu 20
Câu 21 Câu 22
Câu 23 Câu 24
Câu 25 Câu 26
Câu 27 Câu 28
III Viết chương trình (4 điểm) Sinh viên làm trên giấy thi.