Đề cương ôn tập môn Cấu trúc liệu GT-2015 Câu 1: (mỗi thi thường hỏi ý) 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 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 danh sách đã khai báo ở phần a a) • • • • a) Thêm nút vào sau nút danh sách liên kết đơn Ví dụ, thêm nút vào sau b) c) d) e) nút có mã sinh viên x Thêm nút vào trước nút danh sách liên kết đơn Ví dụ, thêm nút vào trước nút có mã sinh viên x Xóa nút đầu danh sách liên kết đơn Xóa nút cuối danh sách liên kết đơn Xóa nút vị trí danh sách liên kết đơn Ví dụ, xóa nút có mã sinh viên x Câu : frfed4d Giả sử có danh sách liên kết đơn mà thông tin khai báo 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ó nhân viên phải đóng thuế thu nhập Biết rằng thu nhập của một người 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 năm lớn 100000000 Câu : 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 sau: • Mã khách hàng, • Họ và tên khách hàng, • 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 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ã/… danh sách liên kết đơn khách hàng Câu : Giả sử có danh sách liên kết đơn mà thông tin khai báo 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 ở và một xâu sdt là một phần toàn số điện thoại 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 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 nút danh sách thỏa mãn hàm trả NULL Câu : Cho một bảng băm đóng có kích thước N = 11, mỗi bucket chứa được 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 (hoặc phương pháp khác) Câu : Cho thông tin 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 Viết hàm chèn phần tử vào đầu/cuối danh sách Viết hàm xóa phần tử vào đầu/cuối danh sách Câu : Cài đặt thuật toán sắp xếp nổi bọt (chọn, đổi chỗ, chèn) tăng dầ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 : 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, 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, bọt, đổi chỗ) mảng a[] = {2, 17, 3, 1, 9, 3, 2} Câu : 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 xếp Quick_Sort 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 với mảng số nguyên: 9, 17, 4, 28, 90, 7, 18, 2, Câu 11 :Trình bày thuật toán xếp Heap_Sort 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 với mảng số nguyên: 9, 17, 4, 28, 90, 7, 18, 2, Câu 12 : Giả sử có tìm kiếm nhị phân chứa nút có khai báo 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 một tìm kiếm nhị phân Câu 13 : a) Hãy chèn các khóa sau vào một 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 lần lượt các nút chứa các khóa: 29, 20, 17 c) Duyệt b) Chuyển biểu thức trung tố sau thành biểu thức hậu tố: ( + ) – ( 15 10 ) + 21 Câu 14 : a) Hãy chèn các khóa sau vào một 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, Xóa khỏi lần lượt các nút chứa các khóa: 20, 17, 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 toán hạng Câu 15 : a) Hãy khai báo cấu trúc tìm kiếm nhị phân chứa các trường thông tin về nhân sự sau: • Họ và tên • Mã nhân viên • Lương đó 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 ( Thêm nút vào tìm kiếm nhị phân ) c) Xóa nút khỏi tìm kiếm nhị phân d) Duyệt tìm kiếm nhị phân e) Thống kê nút theo điều kiện Ví dụ, in nút mà họ tên nhân viên chứa chuỗi “Thu” Câu 16 : Trình bày thuật toán tìm xâu chung dài hai xâu theo phương pháp quy hoạch động Áp dụng tìm xâu chung dài hai xâu 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 để nhân dãy ma trận có kích thước: 4x5, 5x7, 7x3, 3x8, 8x5 Cho biết thứ tự nhân ma trận Câu 18: Xây dựng thuật toán tìm dãy đơn điệu tăng dài (liền nhau) mảng a gồm n phần tử Câu 19 : Xây dựng, cài đặt đánh giá thuật toán in tất 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 xâu không số nguyên tố Số nguyên tố số chia hết cho Câu 20: Cho danh sách gọi điện thoại gồm 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 cài đặt thuật toán đưa số gọi đến nhiều Câu 21: Xây dựng, cài đặt đánh giá thuật toán in tất xâu nhị phân độ dài k (k nhập từ bàn phím) mà xâu có ký tự liền kề giống Câu 22 : Viết hàm nhận đầu vào là một xâu ký tự và đầu trả về số ký tự khác xâu đó, đánh giá độ phức tạp của thuật toán sử dụng Bổ sung thêm số câu 23 Cho đoạn chương trình, chuyển đoạn chương trình thành sơ đồ khối 24 Cho sơ đồ khối, chuyển sơ đồ khối thành chương trình 25 Cho danh sách liên kết đơn xếp theo trường đó, ví dụ xếp theo điểm trung bình Thêm nút vào danh sách liên kết đơn cho danh sách tạo xếp 26 Cho danh sách liên kết đơn mà phần tử xếp, ví dụ xếp tăng dần theo điểm trung bình Hãy tách danh sách thành phần: chứa phần tử có điểm tb>=5; chứa phần tử lại 27 Cho danh sách liên kết đơn mà phần tử xếp, ví dụ xếp tăng dần theo điểm trung bình Hãy ghép danh sách thành danh sách cho danh sách kết 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 thành phần: chứa phần tử có điểm tb>=5; chứa phần tử lại 29 Bạn tạo danh sách liên kết chứa thông tin SV (tên, mã, điểm) cho danh sách tạo thành vòng tròn 30 Giả sử có cấu trúc liệu Stack với phép toán initS, popS, pushS, begin (khởi tạo, lấy phần tử đỉnh, thêm 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 liệu Stack 31 Giả sử có cấu trúc Stack với phép toán initS, popS, pushS, begin (khởi tạo, lấy phần tử đỉnh, thêm 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 dãy số nguyên Ví dụ: 2, 3, 4, đảo thành 5, 4, 3,