You are on page 1of 3

Độ khó theo thứ tự H – M - E

1. Linked list (H)


a. Viết mã giả cho cấu trúc linked list và hàm insert(p, x) và delete(x)
• Hàm insert(p, x): chèn phần tử giá trị x vào vị trí p
• Hàm delete(x): xoá phần tử giá trị x trong cấu trúc linked list, nếu nhiều phần
tử có giá trị x, xoá giá trị đầu tiên, nếu không có phần tử nào thì không xoá.
b. Tính độ phức tạp cho các hàm trong mã giả đó
2. Queue (M)
Viết mã giả cho cấu trúc Queue, hàm enqueue(x) và hàm pop
• Hàm enqueue(x): chèn thêm phần tử có giá trị x vào queue
• Hàm dequeue: xoá và trả ra phần tử có ưu tiên cao nhất khỏi queue, nếu
không có phần tử nào thì trả ra -1.
Tính độ phức tạp cho từng hàm
3. Stack (M)
Viết mã giả cho cấu trúc Stack, hàm push(x) và pop():
• Hàm push(x): chèn thêm phần tử x vào stack
• Hàm pop(x): xoá và trả ra phần tử có thứ tự cao nhất khỏi stack, nếu không
có phần tử nào thì trả ra -1

4. Queue – thực hành (E):


Trình bày mảng Queue khi thực hiện chuỗi các phép toán sau:
enqueue (10); enqueue (5); dequeue(); enqueue (1); dequeue(); enqueue(8);
dequeue(); dequeue(); enqueue(8); enqueue(3); dequeue();
5. Stack – thực hành (E):
Trình bày mảng Stack khi thực hiện chuỗi các phép toán sau:
push (11); push (7); pop ();pop ();push (12); push (5); pop ();push (10); pop ();push
(25); push (8); pop ();pop ()
6. Mảng1 (H)
Cho 1 dãy số gồm n số nguyên dương, đếm số lượng bộ dãy 3 số con liên tiếp có tổng
bằng một số K cho trước.
Đầu vào:
• Dãy số gồm n số nguyên dương
• Giá trị K.
Đầu ra: số lượng dãy con liên tiếp có tổng bằng K
Ví dụ:
Đầu vào:
Dãy: 2 5 10 7 9 1
K = 17
Đầu ra: 2
Giải thích: 2 dãy gồm 2 5 10 và 7 9 1.
Yêu cầu: Trình bày 1 thuật toán bằng mã giả, đánh giá độ phức tạp của thuật
toán.
7. Mảng 2 (M)
Viết mã giả cho chương trình được cho một dãy số có n phần tử, yêu cầu in ra chênh
lệch giữa phần tử nhỏ nhất và phần tử lớn nhất của dãy.
8. Tính độ phức tạp của DFS(G) (H)
9.

10. Viết mã giả cho chương trình đệ quy tính UCLN (M)
11. Sort1(H)
Viết mã giả cho Selection Sort. Trường hợp xấu nhất, trường hợp tốt nhất?
Viết mã giả cho Insertion Sort. Trường hợp xấu nhất, trường hợp tốt nhất?
Viết mã giả cho Bubble Sort. Trường hợp xấu nhất, trường hợp tốt nhất?

12. Sort2 (M)


So sánh độ phức tạp thuật toán Merge Sort với Selection Sort.
13. Hash
Cho hàm hash h(i) = (2i+5) mod 11 với dãy giá trị là 12, 44, 13, 88, 23, 94, 11, 39, 20,
16, 5.
a. Hãy viết lại dãy giá trị sau khi nhận được từ hàm hash, giả sử đụng độ được xử lý
bởi chuỗi phân biệt (chaining). (M)
b. Hãy viết lại dãy giá trị sau khi nhận được từ hàm hash, giả sử đụng độ được xử lý
bởi thăm dò tuyến tính (linear probing). (M)
14. Tree (H)
Cho cây có cấu trúc như sau: 99

63 98

60 62 90 59

2 20 30 61
a. Tính chiều cao của cây và độ sâu của nút X (với X là nút có giá trị tương ứng với khoá
của mình).
b. Hãy viết thứ tự duyệt cây theo pre-order và in-order.
15. Heap (H)
Giả sử cây trên mô tả cấu trúc của 1 cây heap max, hãy trình bày mã giả cho hàm
thêm nút vào cây và hàm xoá nút max của cây.
16. Cây nhị phân tìm kiếm (H)
Cho cây nhị phân tìm kiếm được tạo bởi chèn lần lượt các số của dãy:
10 16 2 8 12 3 13 9 5 1 20
a. Vẽ cây và tính chiều cao của cây (E)
b. Viết mã giả chèn nút vào cây và xoá nút cao nhất của cây (H)
c. Viết mã giả tìm kiếm 1 nút trên cây (H)

17. BFS(H):
Đồ thị như hình vẽ, trình bày các bước tìm đường đi ngắn nhất từ C tới F bằng BFS
18. DFS(H)
Đồ thị như hình vẽ, trình bày các bước tìm đường đi từ C tới F băng DFS
19. Thành phần liên thông(H)
Viết mã giả chương trình tìm thành phần liên thông của 1 đồ thị
20. MST
Viết mã giả thuật toán Prim (H)
Viết mã giả thuật toán Kruskal (H)

Dùng Kruskal để tìm cây khung nhỏ nhất cho đồ thị vô hướng trên (H)

21. Đường đi ngắn nhất(H):

Sử dụng thuật toán Dijkstra để tìm đường đi ngắn nhất từ A tới F. Minh họa từng
bước của thuật toán bằng cách vẽ đồ thị tương ứng kèm theo giải thích ngắn gọn.

You might also like