Câu 2 : frfed4d Giả sử có danh sách liên kết đơn mà thông tin được khai báo như sau: typedef struct {char ten[30]; int nam_cong_tac; float luong;}Data; typedef struct tagNode{Data
Trang 1Đề cương ôn tập môn Cấu trúc dữ liệu và GT-2015
Câu 1: (mỗi bài thi thường hỏi 2 ý)
a) Khai báo cấu trúc dữ liệu danh sách liên kết đơn chứa các thông tin về nhân sự gồm có các trường thông tin:
Họ và tên
Thâm niên công tác (tính theo năm)
Hệ số lương
Lương cơ bản
b) Viết hàm thêm một bản ghi chứa thông tin nhân sự của một người vào cuối/đầu nút p trong danh sách đã khai báo ở phần a
a) Thêm 1 nút vào sau nút nào đó trong danh sách liên kết đơn Ví dụ, thêm nút mới vào sau nút có mã sinh viên là x.
b) Thêm 1 nút vào trước nút nào đó trong danh sách liên kết đơn Ví dụ, thêm nút mới vào trước nút có mã sinh viên là x.
c) Xóa nút ở đầu danh sách liên kết đơn.
d) Xóa nút ở cuối danh sách liên kết đơn.
e) Xóa nút ở vị trí nào đó trong danh sách liên kết đơn Ví dụ, xóa nút có mã sinh viên là x.
Câu 2 : frfed4d
Giả sử có danh sách liên kết đơn mà thông tin được khai báo như sau:
typedef struct {char ten[30]; int nam_cong_tac; float luong;}Data;
typedef struct tagNode{Data infor; struct tagNode *link;}Node;
typedef struct {Node *head; Node *tail;}LList;
Viết hàm tính xem có bao nhiêu nhân viên phải đóng thuế thu nhập Biết rằng thu nhập của một người trong một tháng được tính bằng công thức: lương + năm công tác * 200000 và người đóng thuế thu nhập là người có thu nhập 1 năm lớn hơn 100000000
Câu 3 :
a) Khai báo danh sách liên kết đơn chứa các trường thông tin về một khách hàng như sau:
Mã khách hàng,
Họ và tên khách hàng,
Trang 2 Số điện thoại của khách hàng (13 chữ số).
b) Viết hàm sắp xếp danh sách khách hàng ở câu trên theo chiều tăng dần của tên khách hàng (hoặc theo khóa khác)
c) Tìm kiếm khách hàng theo tên/mã/… trong danh sách liên kết đơn khách hàng.
Câu 4 :
Giả sử có danh sách liên kết đơn mà thông tin được khai báo như sau:
typedef struct {char ten[30]; int makh; char sdt[15];}Data;
typedef struct tagNode{Data infor; struct tagNode *link;}Node;
typedef struct {Node *head; Node *tail;}LList;
Viết hàm có đầu vào là danh sách đã được khai báo ở trên và một xâu sdt là một phần hoặc toàn bộ số điện thoại trong trường điện thoại của một khách hàng nào đó Hàm trả về nút đầu tiên trong danh sách liên kết có phần đầu trường số điện thoại trùng với xâu sdt Nếu không có nút nào trong danh sách thỏa mãn thì hàm trả về NULL
Câu 5 :
Cho một bảng băm đóng có kích thước N = 11, mỗi bucket chứa được 1 phần
tử, hàm băm sử dụng là H(x) = x % N Hãy chèn vào bảng băm lần lượt các khóa sau: 27, 15, 42, 21, 36, 32, 13, 2, 28, 48, 47 sử dụng phương pháp kết nối hợp nhất (hoặc phương pháp khác)
Câu 6 : Cho thông tin của sinh viên gồm: tên, mã, điểm tổng kết Hãy khai
báo danh sách liên kết kép chứa thông tin trên
Viết hàm chèn một phần tử vào đầu/cuối danh sách
Viết hàm xóa một phần tử vào đầu/cuối danh sách
Câu 7 :
Trang 3Cài đặt thuật toán sắp xếp nổi bọt (chọn, đổi chỗ, chèn) tăng dần trên mảng cấu trúc sinh viên gồm các trường thông tin sau:
Mã sinh viên
Tên sinh viên
Tuổi sinh viên
Trường khóa để sắp xếp là trường tuổi, nếu cùng tuổi thì theo tên
Câu 8 :
Hãy cài đặt và đánh giá độ phức tạp của thuật toán sắp xếp chèn (chọn, nổi bọt, đổi chỗ) Minh họa các bước thực hiện thuật toán sắp xếp chèn (chọn, nổi bọt, đổi chỗ) trên mảng a[] = {2, 17, 3, 1, 9, 3, 2}
Câu 9 :
Hãy trình bày các bước, đánh giá độ phức tạp và vẽ sơ đồ của thuật toán tìm kiếm nhị phân (tuần tự)?
Câu 10 : Trình bày thuật toán sắp xếp Quick_Sort trên mảng n số nguyên.
Minh họa các bước thực hiện của thuật toán sắp trên với mảng số nguyên: 9, 17, 4,
28, 90, 7, 18, 2, 5
Câu 11 :Trình bày thuật toán sắp xếp Heap_Sort trên mảng n số nguyên.
Minh họa các bước thực hiện của thuật toán sắp trên với mảng số nguyên: 9, 17, 4,
28, 90, 7, 18, 2, 5
Câu 12 :
Giả sử có cây tìm kiếm nhị phân chứa các nút có khai báo như sau:
typedef struct{char ten[30]; int ma; float luong;}Data;
typedef struct tagNode {Data infor; struct tagNode *left, *right;}Node, *Tree; Viết hàm tính trung bình cộng lương của các nhân viên trong một cây tìm kiếm nhị phân ở trên
Trang 4Câu 13 :
a) Hãy chèn các khóa sau vào một cây tìm kiếm nhị phân rỗng mà các nút chứa các số nguyên: 20, 17, 29, 15, 80, 6, 19, 51, 32
b) Xóa khỏi cây lần lượt các nút chứa các khóa: 29, 20, 17
c) Duyệt cây
b) Chuyển biểu thức trung tố sau thành biểu thức hậu tố: 5 ( 2 + 3 ) – 2 ( 15 -
10 ) + 21
Câu 14 :
a)Hãy chèn các khóa sau vào một cây tìm kiếm nhị phân rỗng mà các nút chứa các số nguyên: 17, 5, 1, 20, 19, 30, 8, 18, 9 Xóa khỏi cây lần lượt các nút chứa các khóa: 20, 17, 5
b) Chuyển biểu thức hậu tố sau thành biểu thức tiền tố: a x + b q + / k m * + Trong đó: a, x, b, q, k, m là các toán hạng
Câu 15 :
a) Hãy khai báo cấu trúc cây tìm kiếm nhị phân chứa các trường thông tin về nhân sự như sau:
Họ và tên
Mã nhân viên
Lương
trong đó mã nhân viên là trường khóa
b) Viết hàm chèn thêm một nhân viên vào cây (Thêm 1 nút vào cây tìm kiếm nhị phân )
c) Xóa 1 nút khỏi cây tìm kiếm nhị phân.
d) Duyệt cây tìm kiếm nhị phân.
e) 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 nhân viên chứa chuỗi “Thu”
Trang 5Câu 16 :
Trình bày thuật toán tìm xâu con chung dài nhất của hai xâu theo phương pháp quy hoạch động Áp dụng tìm xâu con chung dài nhất của hai xâu con sau:
“CTXDCXTXC”, “CXDCTXC”
Câu 17 :
Trình bày thuật toán nhân dãy ma trận theo phương pháp quy hoạch động Áp dụng tìm số phép nhân ít nhất để nhân dãy các ma trận có kích thước: 4x5, 5x7, 7x3, 3x8, 8x5 Cho biết thứ tự nhân các ma trận đó
Câu 18:
Xây dựng thuật toán tìm dãy con đơn điệu tăng dài nhất (liền nhau) của mảng
a gồm n phần tử
Câu 19 :
Xây dựng, cài đặt và đánh giá thuật toán in ra tất cả các xâu nhị phân có độ dài k (k nhập từ bàn phím) mà biểu diễn thập phân của xâu không là số nguyên tố Số nguyên tố là số chỉ chia hết cho 1 và chính nó
Câu 20:
Cho một danh sách các cuộc gọi điện thoại gồm các thông tin: số gọi đến, thời gian bắt đầu, số phút (nguyên) gọi Hãy khai báo cấu trúc cần thiết và cài đặt thuật toán đưa ra số gọi đến nhiều nhất
Câu 21:
Xây dựng, cài đặt và đánh giá thuật toán in ra tất cả các xâu nhị phân độ dài k (k nhập từ bàn phím) mà trong xâu có ít nhất 2 ký tự ở liền kề nhau giống nhau
Câu 22 :
Trang 6Viết hàm nhận đầu vào là một xâu ký tự và đầu ra trả về số ký tự khác nhau trong xâu đó, đánh giá độ phức tạp của thuật toán sử dụng
Bổ sung thêm một số câu
23 Cho một đoạn chương trình, hãy chuyển đoạn chương trình đó thành sơ đồ khối.
24 Cho một sơ đồ khối, hãy chuyển sơ đồ khối đó thành chương trình.
25 Cho danh sách liên kết đơn đã đượ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 1 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.
26 Cho danh sách liên kết đơn 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.
27 Cho 2 danh sách liên kết đơn 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 2 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.
28 Cho danh sách liên kết đơn 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.
29 Bạn hãy tạo một danh sách liên kết chứa thông tin của SV (tên, mã, điểm) sao cho danh sách đó tạo thành một vòng tròn.
30 Giả sử đã có cấu trúc dữ liệu Stack với các phép toán initS, popS, pushS, begin (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.
31 Giả sử đã có cấu trúc Stack với các phép toán initS, popS, pushS, begin (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