Cài đặt các cấu trúc dữ liệu và các thao tác đã học lý thuyết các CTDL: dãy, danh sách, ngăn xếp, hàng đợi….. Minh họa các thao tác trên cây nhị phân tìm kiếmcây nhị phân cân bằng chứa c
Trang 1Bài tập Cấu Trúc dữ liệu
Bài tập cơ bản:
1 Cài đặt các cấu trúc dữ liệu và các thao tác đã học (lý thuyết các CTDL: dãy, danh sách, ngăn xếp, hàng đợi…
2 Minh họa các thao tác trên danh sách liên kết đơn, danh sách liên kết kép, danh sách liên kết vòng
a - Khởi tạo danh sách
b - Thêm một phần tử vào danh sách
c - Xóa một phần tử x ra khỏi danh sách
d - Tìm kiếm trên danh sách theo các tiêu chí sau:
i 1 số x cho trước
ii số lớn nhất iii số bé nhât
iv số nguyên tố đầu tiên
v số chính phương đầu tiên
vi số nguyên tố lớn nhất vii số nguyên tố bé nhât
viii số chính phương lớn nhất
ix số chính phương bé nhất
3 Viết các hàm xác định các thông tin của cây nhị phân T
(xét cách cài đặt đệ quy và không đệ quy *)
a Số nút lá
b Số nút có đúng 1 cây con
c Số nút có đúng 2 cây con
d Số nút có khóa nhỏ hơn x (giả sử T là CNPTK)
e Số nút có khóa lớn hơn x (giả sử T là CNPTK)
f Số nút có khóa lớn hơn x và nhỏ hơn y (T là CNPTK)
g Chiều cao của cây
h In ra tất cả các nút ở tầng (mức) thứ k của cây T
i In ra tất cả các nút theo thứ tự từ tầng 0 đến tầng thứ h-1 của cây T (h
là chiều cao của T)
j Kiểm tra xem T có phải là cây cân bằng hoàn toàn không
k Tìm mức có nhiều nút lá nhất
l Sao chép cây
m Kiểm tra cây T1 có phải là con cây T không
(CNPTK: cây nhị phân tìm kiếm.)
4 Minh họa các thao tác trên cây nhị phân tìm kiếm(cây nhị phân cân bằng) chứa các số nguyên
a - Khởi tạo cây
b - Thêm một phần tử vào cây
c - Xóa một phần tử x ra khỏi cây
Trang 2d - Tìm kiếm trên cây theo các tiêu chí sau:
i 1 số x cho trước
ii số lớn nhất iii số bé nhât
iv số nguyên tố đầu tiên
v số chính phương đầu tiên
vi số nguyên tố lớn nhất vii số nguyên tố bé nhât
viii số chính phương lớn nhất
ix số chính phương bé nhất
5 Chương trình đởi cơ số, cài đặt bằng stack
6 Tìm hốn vị của một dãy số: dùng đệ quy và khơng dùng đệ quy
7 Bài tốn Josephus : cĩ N người đã quyết định tự sát tập thể bằng cách đứng trong vịng trịn và giết người thứ M quanh vịng trịn, thu hẹp hàng ngũ lại khi từng người lần lượt ngã khỏi vịng trịn Vấn đề là tìm ra thứ tự từng người bị giết
Ví dụ : N = 9, M = 5 thì thứ tự là 5, 1, 7, 4, 3, 6, 9, 2, 8
Hãy viết chương trình giải quyết bài tốn Josephus
8 Dùng cây nhị phân tìm kiếm để quản lý các điểm trong 2D: tìm kiếm, thêm, bớt, tạo cây, hủy cây, lưu dữ liệu xuống file, đọc dữ liệu từ file lên cây
9 Một danh sách sinh viên được tở chức lưu trữ bằng cấu trúc danh sách liên kết, một phần tử bao gồm các thành phần như sau
int MASO
char *HOTEN
float DIEMTOAN, DIEMVAN, DIEMLY
Viết các hàm thực hiện các chức năng sau:
Nhập xuất, ghi dữ liệu vào file, đọc dữ liệu từ file
Thêm, xố một sinh viên
Tìm kiếm sinh viên theo mã số, theo điểm trung bình
Sắp xếp sv theo mã số
Sắp xếp sv theo điểm từ cao xuống thấp, xếp loại, xếp hạng, loại giỏi ở trên cùng rồi đến khá trung bình yếu
điểm trung bình
< 5.0 : Yếu
< =6.5 : Nếu cĩ mơn dưới 4 : Yếu, ngược lại Trung Bình < 8.0 : Nếu cĩ mơn <6.5 : Trung Bình, ngược lại Khá
>=8.0 : Nếu cĩ mơn <7 : Khá, ngược lại Giỏi
In ra màn hình danh sách SV : Mã số, Họ tên, các điểm(T,V,L), điểm trung bình, loại, xếp hạng (cùng điểm TB, cùng loại thì cùng hạng) theo thứ tự hạng tăng dần
Trang 3Bài tập nâng cao
10 Xây dựng chương tính giao, hội, hiệu của 2 tập hợp số nguyên
Giả sử cĩ một quan hệ trên các phần tử của một tập hợp
Xét tính chất của quan hệ này: phản xả, phản xứng, đối xứng, bắc cầu
11 Chọn cấu trúc dữ liệu để cài đặt các tính tốn trên số nguyên lớn(cĩ thể lên đến 128 hay 256 chữ số) Các phép tốn gồm cĩ +, -, *, /, !, lũy thừa
12 Chọn cấu trúc thích hợp để lưu trữ một đa thức với các hệ số khác 0, khơng cần nhập theo thứ tự bậc Viết chương trình:
a Tính giá trị của đa thức tại một giá trị của biến
b Tính cộng, trừ, nhân, chia của 2 đa thức (phép chia: tìm thương và phần dư
c Tính đạo hàm, tích phân của một đa thức
13 Một ma trận chứa rất ít phần tử với gía trị cĩ nghĩa (tức phần tử khác 0) gọi là
ma trận thưa Tìm cấu trúc dữ liệu biểu diễn ma trận thưa sao cho tiết kiệm nhất (chỉ lưu trữ các phần tử cĩ ý nghĩa) Viết chương trình cho phép nhập, xuất ma trận, cộng, trừ, nhân, chia 2 ma trận, tính nghịch đảo nếu cĩ của 1 ma trận
14 Giả sử phải xây dựng một chương trình soạn thảo văn bản, hãy chọn cấu trúc
dữ liệu thích hợp để lưu trữ văn bản trong quá trình soạn thảo Biết rằng:
- Số dịng văn bản khơng hạn chế
- Mỗi dịng văn bản cĩ chiều dài tối đa 80 ký tự
- Các thao tác yêu cầu gồm:
Di chuyển trong văn bản (lên, xuống, qua trái, qua phải) Thêm, xố sửa ký tự trong một dịng
Thêm, xố một dịng trong văn bản Đánh dấu, sao chép khối
- Cho phép lưu văn bản lên đĩa, đọc văn bản từ đĩa
15 Biểu diễn CTDL và định nghĩa kiểu dữ liệu cho một đa giác phẳng trong mp Oxy, và viết một số xử lý như tính diện tích, chu vi, tịnh tiến…
16 Viết chương trình tính tốn các biểu thức tốn học nhập từ bàn phím
a Tính tốn với 2 phép tốn +, * Vd: 3 + 4*(6+7)
b Đủ 4 phép tốn: +, -, *, /
c Cĩ các phép hàm đơn giản; sin, cos…
d Lượng giá 1 số biểu thức symbolic như a+a=2*a, a*a*a=a^3