You are on page 1of 2

Đề cương ôn tập môn học CTDL và GT

1. Cho một đoạn chương trình, hãy chuyển đoạn chương trình đó thành sơ đồ khối. Ví dụ: Biểu
diễn đoạn chương trình sau thành sơ đồ khối.

for(i=0; i<n-1; i++)


if(0 == a[i] %2)
for(j=i+1; j<n; j++)
if(0 == a[j]%2&&a[i]>a[j]) {
tg=a[i];
a[i]=a[j];

a[j]=tg;
}
2. Cho một sơ đồ khối, hãy chuyển sơ đồ khối đó thành chương trình.
3. Cho một đoạn chương trình, xác định độ phức tạp của đoạn chương trình đó.
4. Khai báo cấu trúc danh sách liên kết đơn/kép. Thông tin chứa trong mỗi nút gồm: họ tên, mã sv,
điểm trung bình.
5. Thêm một nút vào đầu/cuối danh sách liên kết đơn/kép
6. Thêm một nút vào sau nút nào đó trong danh sách liên kết đơn/kép. Ví dụ, thêm nút mới vào
sau nút có mã sinh viên là x.
7. Thêm một nút vào trước nút nào đó trong danh sách liên kết đơn/kép. Ví dụ, thêm nút mới vào
trước nút có mã sinh viên là x.
8. Cho danh sách liên kết đơn/kép đã được sắp xếp theo một trường nào đó, ví dụ sắp xếp theo
điểm trung bình. Thêm một nút vào trong danh sách liên kết đơn sao cho danh sách mới được tạo ra vẫn
được sắp xếp.
9. Xóa nút ở đầu/cuối danh sách liên kết đơn/kép.
10. Xóa nút ở vị trí nào đó trong danh sách liên kết đơn/kép. Ví dụ, xóa nút có mã sinh viên là x.
11. Cho dslk đơn, hoặc kép chứa các số nguyên. Xóa nút ở vị trí nào đó trong danh sách liên kết
đơn/kép trên sao cho sau khi xoá ta được ds dài nhất các số được sắp xếp tăng dần.
12. Cho danh sách liên kết đơn/kép mà các phần tử đã được sắp xếp, ví dụ sắp xếp tăng dần theo
điểm trung bình. Hãy tách danh sách trên thành 2 phần: chứa các phần tử có điểm tb>=5; chứa các phần tử
còn lại.
13. Cho hai danh sách liên kết đơn/kép mà các phần tử đã được sắp xếp, ví dụ sắp xếp tăng dần theo
điểm trung bình. Hãy ghép hai danh sách trên thành một danh sách sao cho danh sách kết quả cũng được
sắp xếp tăng dần theo điểm trung bình.
14. Cho danh sách liên kết đơn/kép chứa thông tin của các sinh viên. Hãy tách danh sách trên thành
hai danh sách: danh sách thứ nhất chứa các phần tử có điểm tb>=5; danh sách thứ hai chứa các phần tử còn
lại.
15. Cho ds liên kết đơn, hoặc kép các nhân viên (tên, mã, hsl, pc, mã phòng ban). Bạn hãy tính trung
bình lương của từng phòng ban. Biết lương của nhân viên được tính theo công thức hsl*2000+pc.
16. Cho ds liên kết đơn, hoặc kép các nhân viên (tên, mã, hsl, pc, mã phòng ban). Bạn hãy viết hàm
cho phép sửa thông tin của một nhân viên.
17. Cho ds liên kết đơn, hoặc kép các nhân viên (tên, mã, hsl, pc, mã phòng ban). Bạn hãy viết hàm
tìm thông tin của một nhân viên trong danh sách. Tiêu chí tìm kiếm là tên (hoặc mã, ...).
18. Giả sử đã có cấu trúc dữ liệu Stack với các phép toán initS, popS, pushS, topS (khởi tạo, lấy ra
phần tử ở đỉnh, thêm một phần tử vào đỉnh, lấy giá trị phẩn tử ở đỉnh). Hãy viết đoạn chương trình chuyển
số nguyên n từ hệ thập phân sang nhị phân có sử dụng cấu trúc dữ liệu Stack.
19. Giả sử đã có cấu trúc Stack với các phép toán initS, popS, pushS, topS (khởi tạo, lấy ra phần tử
ở đỉnh, thêm một phần tử vào đỉnh, lấy giá trị phẩn tử ở đỉnh). Hãy viết đoạn chương trình đảo ngược một
dãy số nguyên. Ví dụ: 2, 3, 4, 5 được đảo thành 5, 4, 3, 2
20. Giả sử đã có cấu trúc Queue với các phép toán initQ, delQ, addQ, topQ (khởi tạo, lấy ra phần
tử ở đỉnh, thêm một phần tử vào đỉnh, lấy giá trị phẩn tử ở đỉnh). Hãy viết đoạn chương trình nhận đầu vào
là chuỗi nhị phân/bát phân/thập lục phân, in ra giá trị thập phân tương ứng.
21. Sắp xếp mảng sinh viên (tên, mã, điểm trung bình) tăng dần theo tên, cùng tên theo mã. Áp dụng
thuật toán sắp xếp đã học.
22. Sắp xếp danh sách liên kết đơn/kép, thông tin chứa trong mỗi nút gồm tên, mã, điểm trung bình
tăng dần theo tên, cùng tên theo mã. Áp dụng thuật toán sắp xếp đã học.
23. Tìm kiếm sinh viên theo tên/mã/… trong mảng gồm n sinh viên.
24. Tìm kiếm sinh viên theo tên/mã/… trong danh sách liên kết đơn/kép sinh viên.
25. Khai báo cấu trúc cây tìm kiếm nhị phân. Ví dụ: thông tin lưu trong các nút gồm: họ tên, mã,
điểm TB. Khóa là mã sv.
26. Thêm một nút vào cây tìm kiếm nhị phân.
27. Xóa một nút khỏi cây tìm kiếm nhị phân. Áp dụng thực hiện một bài toán cụ thể. Ví dụ: Xoá
các nút trong cây BST về sinh viên có điểm trung bình <4.0.
28. Duyệt cây tìm kiếm nhị phân. Áp dụng để thực hiện một bài toán cụ thể. Ví dụ: Thống kê các
nút trong cây theo một điều kiện nào đó (ví dụ, in ra mọi nút mà họ tên sinh viên chứa chuỗi “Thu”).

29. Dựng cây BST. Ví dụ: Cho một dãy khoá sau 19, 20, 4, 77, 89, 26, 12, 11, 6, 60, 58, 44, 12, 51.
Hãy dựng cây BST tương ứng với dãy khoá trên bằng cách thêm lần lượt các khoá đó vào cây ban đầu rỗng.

30. Chuyển cây tổng quát về cây nhị phân.

31. Dựng cây biểu thức từ biểu thức ban đầu ở dạng tiền tố (hậu tố, hoặc trung tố). Ví dụ cho biểu
thức 2*(a+b-c) – (a+x)/2. Tìm biểu trung tố, hậu tố (hoặc tiền tố) tương ứng với biểu thức ban đầu.

32. Phương pháp quy hoạch động (bài toán nhân dãy ma trận, tìm chuỗi con chung dài nhất).

Ghi chú: - 4 phương pháp sắp xếp (chọn trực tiếp, đổi chỗ, chèn, nổi bọt) + quick_sort

- 2 phương pháp tìm kiếm (tuần tự, nhị phân)

You might also like