You are on page 1of 6

Bài 2

Câu 1. Thực hiện các yêu cầu sau đây: Trình bày khái niệm cấu trúc vector. - Lập trình
phương thức xóa (erase) một phần tử của vector. - Lập trình phương thức thêm một
phần tử vào vị trí bất kỳ của vector. Lưu ý: vector được cài đặt bằng mảng.
Câu 2. Thực hiện các yêu cầu sau đây:

- Trình bày cấu trúc danh sách liên kết đơn (single list) (vẽ hình minh họa).

- Lập trình phương thức xóa (erase) một phần tử của danh sách liên kết đơn.

- Lập trình phương thức thêm một phần tử vào đầu (push_front) danh sách liên kết đơn.

Câu 3. Thực hiện các yêu cầu sau đây:

- Trình bày cấu trúc danh sách liên kết kép (double list) (vẽ hình minh họa).

- Lập trình phương thức xóa một phần tử của danh sách liên kết kép.

- Lập trình phương thức thêm một phần tử vào đầu danh sách liên kết kép

Câu 4. Thực hiện các yêu cầu sau đây:

Khái niệm cây, trình bày cấu trúc lớp cây tổng quát .

- Lập trình phương thức thêm một nút mới vào cây.

Câu 5. Thực hiện các yêu cầu sau đây:

Khái niệm cây nhị phân. - Lập trình phương thức thêm (insert) một nút mới vào cây nhị phân. - Lập trình
phương thức xóa (remove) một nút trên cây nhị phân.

Câu 6. Thực hiện các yêu cầu sau đây:

- Định nghĩa ngăn xếp (Stack), trình bày cấu trúc dữ liệu stack, vẽ hình minh họa, lấy 2 ví dụ trong thực tế
có cấu trúc stack. - Trình bày thuật toán chuyển đổi biểu thức dạng trung tổ sang dạng hậu tổ.

Câu 7. Thực hiện các yêu câu sau đây:

- Định nghĩa hàng đợi (Queue), trình bày về cấu trúc dữ liệu queue, vẽ hình minh họa, lấy 2 ví dụ ứng
dụng cấu trúc hàng đợi.

- Lập trình thuật toán

Câu 8. Thực hiện các yêu câu sau đây:

- Định nghĩa cây tìm kiếm nhị phân, trình bày cấu trúc lớp cây tìm kiếm nhị phân

- Lập trình phương thức tìm kiếm trên cây.

Câu 9. Thực hiện các yêu câu sau đây:

- Định nghĩa cây tìm kiếm nhị phân, trình bày cấu trúc lớp cây tìm kiếm nhị phân

- Lập trình phương thức thêm một nút mới vào cây tìm kiếm nhị phân.
- Lập trình phương thức tìm kiếm trên tìm kiếm nhị phân.

Câu 10. Thực hiện các yêu cầu sau đây:

- Định nghĩa cây tìm kiếm nhị phân, trình bày cấu trúc lớp cây tìm kiếm nhị phân

- Lập trình phương thức thêm một nút mới vào cây tìm kiếm nhị phân.

- Lập trình phương thức xóa một nút trên cây tìm kiếm nhị phân.

Câu 11. Thực hiện các yêu cầu sau đây:

- Định nghĩa cây tìm kiếm nhị phân, trình bày cấu trúc lớp cây tìm kiếm nhị phân - Vẽ cây tìm kiếm nhị
phân với các nút lần lượt có giá trị sau: 246, 123, 132, 542, 65, 354, 165, 567, 80, 188, 220, 75.

Câu 12. Thực hiện các yêu câu sau đây:

- Trình bày cấu trúc bảng băm (Hashtable)

- Cài đặt phương thức tìm kiểm trên bảng băm

Câu 13. Thực hiện các yêu cầu sau đây:

Trình bày cấu trúc bảng băm (Hashtable)

- Vẽ cấu trúc của bảng băm với các giá trị khóa lần lượt: 564, 123, 679, 542, 65,

354, 165, 567, 80, 434. Biết rằng kích thước của bảng m = 9 và hàm băm là hàm

chia.

BÀI 3: XÂY DỰNG LỚP ỨNG DỤNG BẰNG C++

Câu 1. Thực hiện các yêu cầu sau đây:

Xây dựng lớp biểu diễn các đối tượng sinh viên gồm các thuộc tỉnh: mã, họ tên, năm sinh, giới tính, lớp;
các toán tử nhập >>, xuất <<, phương thức lấy mã sinh viên.

- Xây dựng lớp quản lý một danh sách sinh viên băng vector (sử dụng lớp vector của C++), có các phương
thức sau: Thêm sinh viên, Xóa một sinh viên theo mã, In danh sach sinh viên lên màn hình. Tìm kiếm
nhân viên theo mã bằng thuật toán tìm kiếm nhị phân (giả sử danh sách nhân viên đã được sắp xếp tăng
dần theo mã).

Câu 2. Thực hiện các yêu cầu sau đây:

- Xây dựng lớp biểu diễn các đối tượng xe máy gồm các thuộc tính: biển kiểm soát (BKS), họ tên chủ xe,
nhãn hiệu, năm sản xuất; các toán tử nhập >>, xuất <<, phương thức lấy giá trị biển kiểm soát.

- Xây dựng lớp quản lý một danh sách xe máy băng vector (sử dụng lớp vector của C++), có các phương
thức sau: Thêm xe, Xóa một xe theo BKS, In danh sach sinh viên lên màn hình, Tìm kiếm xe theo BKS
bằng thuật toán tìm kiếm nhị phân (giả sử danh sách xe đã được sắp xếp tăng dần theo BKS).

Câu 3. Thực hiện các yêu cầu sau đây:


Xây dựng lớp biểu diễn các đối tượng Nhân viên của một công ty gồm các thuộc tính: mã, họ tên, năm
sinh, lương; các toán tử nhập >>, xuất <<, phương

thức lấy mã nhân viên.

- Xây dựng lớp Quản lý một danh sách nhân viên của một công ty bằng danh

sách liên kết (sử dụng lớp list của C++), có các phương thức sau: Thêm một

nhân viên, Xóa một nhân viên theo mã, In danh sách nhân viên lên màn hình,

Tìm kiếm sinh viên theo mã bằng thuật toán tìm kiểm tuần tự.

Câu 4. Thực hiện các yêu cầu sau đây:

- Xây dựng lớp biểu diễn các đối tượng thi sinh gồm các thuộc tính: số báo danh

(SBD), họ tên, năm sinh, giới tính, điểm thi toán, lý, hóa; các toán tử nhập >>,

xuất <<, phương thức lấy SBD.

Xây dựng lớp Quản lý một danh sách thí sinh của một cuộc thi bằng danh

sách liên kết (sử dụng lớp list của C++), có các phương thức sau: Thêm một thí

sinh, Xóa một thi sinh theo mã, In danh sách thí sinh lên màn hình, Tìm kiếm thi

sinh theo SBD bằng thuật toán tìm kiểm tuần tự.

BÀI 4: THUẬT TOÁN SẮP XẾP VÀ CÀI ĐẶT

Câu 1. Thực hiện các yêu cầu sau đây:

Trình bày ý tưởng của thuật toán sắp xếp Quicksort

- Lập trình thuật toán Quicksort

Câu 2. Thực hiện các yêu cầu sau đây:

- Trình bày ý tưởng của thuật toán sắp xếp HeapSort

- Lập trình thuật toán Quicksort

Câu 3. Thực hiện các yêu câu sau đây:

Trình bày ý tưởng của thuật toán sắp xếp MergeSort

- Lập trình thuật toán Merge Sort

Câu 4. Thực hiện các yêu cầu sau đây:

- Trình bày ý tưởng của thuật toán sắp xếp chèn (InsertionSort)

- Lập trình thuật toán sắp xếp chèn

Câu 5. Thực hiện các yêu cầu sau đây:


Trình bày ý tưởng của thuật toán sắp xếp chọn (SelectionSort)

- Lập trình thuật toán sắp xếp chọn

Câu 6. Thực hiện các yêu cầu sau đây:

Trình bày ý tưởng của thuật toán sắp xếp nổi bọt (Bubble Sort)

- Lập trình thuật toán sắp xếp nổi bọt

BÀI 5: MÔ TẢ HOẠT ĐỘNG SẮP XẾP

Câu 1. Mô tả quá trình phân hoạch dãy số sau đây băng thuật toán Partition trong thuật toán Quicksort.

85, 76, 35, 43, 14, 121, 67, 132, 32, 75, 12, 543, 132.

Câu 2. Mô tả quá trình phân hoạch dãy số sau đây bằng thuật toán Partition trong thuật toán Quicksort.

50, 76, 123, 10, 140, 121, 7, 12, 132, 30, 12, 40, 130.

Câu 3. Mô tả quá trình phân hoạch dãy số sau đây bằng thuật toán Partition trong thuật toán Quicksort.

140, 176, 35, 543, 14, 210, 67, 156, 32, 75, 12, 543, 132.

Câu 4. Mô tả quá trình vun đồng dãy số sau đây bằng thuật toán vun đồng trong thuật toán HeapSort.

52, 54, 87, 34, 54, 20, 70, 23, 32, 80, 12, 430, 300.

Câu 5. Mô tả quá trình vun đồng dãy số sau đây bằng thuật toán vun đồng trong thuật toán HeapSort.

20, 34, 35, 34, 14, 210, 67, 56, 32, 75, 12, 43, 130.

Câu 6. Mô tả quá trình vun đồng dãy số sau đây bằng thuật toán vun đồng trong thuật toán HeapSort.

65, 43, 35, 40, 50, 210, 670, 56, 32, 75, 12, 430, 165.

Câu 7. Mô tả quá trình trộn 2 nửa dãy số sau đây để được dãy được sắp bằng thuật toán trộn trong
thuật toán MegreSort.

, 54, 87, 134, 154, 200 | 10, 55, 70, 80, 92, 160, 300.

20 Câu 8. Mô tả quá trình trộn 2 nửa dãy số sau đây để được dãy được sắp bằng thuật toán trộn trong
thuật toán Megre Sort.

10, 34, 35, 60, 84, 210 | 12, 32, 56, 75, 80, 213, 330.

Câu 9. Mô tả quá trình trộn 2 nửa dãy số sau đây để được dãy được sắp bằng thuật toán trộn trong
thuật toán Megre Sort.

5, 43, 55, 80, 150, 310 45, 56, 75, 80, 430, 650.

Câu 10. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp chèn (insertion sort).

54, 12, 31, 98, 25, 76, 65, 18.


Câu 11. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp chèn (insertion sort). Câu 12.
Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp chèn (insertion sort).

54, 12, 31, 98, 25, 76, 65, 18.

Câu 13. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp chọn (Selection sort).

43, 12, 13, 76, 25, 76, 65, 21.

Câu 14. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp chọn (Selection sort).

65, 12, 75, 76, 86, 23, 65, 24.

Câu 15. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp chọn (Selection sort).

32, 4, 13, 643, 25, 76, 54, 10.

Câu 16. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp nổi bọt (Bubble sort).

43, 4, 76, 643, 25, 76, 54, 10.

Câu 17. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp nổi bọt (Bubble sort).

435, 4, 87, 63, 225, 76, 54, 100.

Câu 18. Mô tả quá trình sắp xếp dãy số sau đây bằng thuật toán sắp xếp nổi bọt (Bubble sort).

400, 41, 76, 643, 205, 76, 54, 120.

Bài 2.thi
Câu 1 (2.5 điểm) Thực hiện các yêu cầu sau đây:

-Trình bày khái niệm cấu trúc vector.

- Khi xây dựng lớp mẫu Vector có dữ liệu gồm int n,cap; T*buffer; hãy lập trình các phương thức sau của
lớp Vector

Hàm void Vector<T>::erase(int k) là xoá phần tử ở vị trí k

Hàm void Vector<T>::insert(int k, Tx) là thêm phần tử x vào vị trí k

Câu 2. (2.5 điểm) Thực hiện các yêu cầu sau đây:

- Trình bày cấu trúc danh sách liên kết đơn (single list) (vẽ hình minh họa).

- Khi xây dựng lớp mẫu Node có dữ liệu gồm public: T elem; Node *next; và lớp mẫu Slist có dữ liệu gồm
int n; Node<T>*Head, *Trail; hãy lập trình các phương thức sau trong (không sử dụng bộ lặp)

Hàm void Slist<T>::erase (T x) xoá một phần từ x (nếu có) ra khỏi Slist.

Hàm void Slist<T>::push_front(Tx) thêm phần tử vào đầu Slist.

Câu 3 (2.5 điểm) Thực hiện các yêu cầu sau đây:
Trình bày khái niệm cây tìm kiếm nhị phân và cấu trúc lớp cây tìm kiếm nhị phân

-Khi xây dựng lớp mẫu Node của cây tìm kiếm nhị phân gồm public: T elem; Node<T>*left,*right; giả sử
đã có sẵn các toán tử so sánh đối với kiểu dữ liệu T hãy lập trình các phương thức sau:

+ Hàm T *max(Tx) tìm giá trị của phần tử lớn nhất trong cây (cây đã khác rỗng).

+ Hàm void erase (Tx) xoá dữ liệu x ra khỏi cây nếu có.

Câu 4 (2.5 điểm) Thực hiện các yêu cầu sau đây:

- Khái niệm cây, trình bày cấu trúc lớp cây tổng quát.

-Khi xây dựng lớp mẫu Node của cây tổng quát gồm gồm public: T elem; vector<Node<T>*> child; hãy
lập trình các hàm sau:

+ Hàm Node<T>*find(Node<T>*H, T x) tìm giá trị x trong cây H trả về địa chỉ (con trỏ) của Node

+ Hàm void insert(Node<T>*H, Tx, Node<T>*p) thêm Node p vào cây H là con của 1 Node có giá trị x (có
thể sử dụng hàm find ở trên).

Câu 5. (2.5 điểm) Thực hiện các yêu cầu sau đây:

- Trình bày khái niệm hàng đợi (Queue), trình bày về cấu trúc dữ liệu queue, vẽ hình minh họa.

- Sử dụng cấu trúc dữ liệu hàng đợi trong thư viện STL có sẵn của C++ giải bài xếp búp bê Nga như sau:
có n con búp bê có chiều cao là a1... an đã sắp giảm dần nếu 2 con búp bê có chiều cao chênh ít nhất
khoảng cách 3 thì sẽ nuốt nhau. Hãy tìm cách lồng nhiều búp bê nhất bằng cách duyệt lần lượt chiều cao
đưa vào queue nếu con đứng đầu nuốt được con mới thêm thì bỏ con đứng đầu khỏi queue, sau khi
duyệt hết size của queue chính là số búp bê ít nhất.

Câu 6. (2.5 điểm) Thực hiện các yêu cầu sau đây:

- Trình bày khái niệm ngăn xếp (stack), trình bày cấu trúc dữ liệu stack, vẽ hình minh họa.

- Trình bày thuật toán (không viết code) chuyển đổi biểu thức dạng trung tổ sang dạng hậu tố; mô
phỏng chuyển sang hậu tổ biểu thức (3+5)*(4+(3*(6-(2+5)*3)+7)*2)

Câu 7 (2.5 điểm) Thực hiện các yêu cầu sau đây:

- Trình bày khái niệm ngăn xếp (stack), trình bày cấu trúc dữ liệu stack, vẽ hình minh họa.

-Sử dụng cấu trúc dữ liệu hàng đợi trong thư viện STL có sẵn của C++ giải bài toán nhập dãy dấu ngoặc
kiểm tra xem có hợp lệ hay không bằng cách duyệt các xâu đầu vào nếu gặp mở ngoặc "(', '[', '{' đưa vào
stack nếu gặp đóng ngoặc ')', ']', ')' thì kiểm tra nếu đỉnh của stack là ngoặc ăn khớp với đóng để lấy ra
(không khớp không hợp lệ), cuối cùng stack rỗng thì hợp lệ

You might also like