ĐỀ CƯƠNG ÔN TẬP MÔN CTDL sẽ giúp bạn tăng khả năng tư duy, xoay quanh những bài tập điển hình nhất. By-TaiLieuIT
ĐỀ CƯƠNG ƠN TẬP MƠN CTDL & GT Hình thức thi: Thực hành Thời gian làm thi: 45 phút (1 hoàn chỉnh) Các nội dung trọng tâm: + DSLK kề + DSLK đơn + DSLK đôi + Ngăn xếp + Hàng đợi + Cây nhị phân, ( Mình đính kèm file zip cpp cho bạn ln ) BÀI TẬP DSLK ĐƠN Bài 1) Viết chương trình thực yêu cầu sau: - Định nghĩa cấu trúc Sinh Viên bao gồm trường thông tin sau: Mã lớp, Mã sinh viên, Tên sinh viên, Năm sinh, Quê quán - Cài đặt cấu trúc danh sách liên kết đơn, với thao tác: 1) Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3)Chèn nút vào danh sách; 4) Xóa nút khỏi danh sách; 5) Duyệt danh sách - Chương trình chính: Sử dụng thao tác để: + Tạo danh sách liên kết đơn bao gồm n sinh viên với đầy đủ thông tin + Hiển thị danh sách nhập hình + Nhập vào từ bàn phím mã sinh viên bất kỳ, kiểm tra xem sinh viên có mã tương ứng với mã vừa nhập lưu danh sách chưa? Nếu có xóa sinh viên khỏi danh sách hiển thị lại danh sách sau xóa Ngược lại, thơng báo khơng tìm thấy Bài 2) Viết chương trình thực yêu cầu sau: - Khai báo kiểu cấu trúc Nhân viên bao gồm thông tin: Mã nhân viên, tên nhân viên, năm sinh, hệ số lương - Cài đặt cấu trúc danh sách Liên kết đơn, với thao tác: 1)Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3)Chèn nút vào danh sách; 4) Duyệt danh sách; 5) Tìm kiếm phần tử danh sách - Chương trình chính: Sử dụng thao tác cài đặt để: + Tạo danh sách Liên kết đơn lưu n Nhân viên với đầy đủ thông tin (n nhập từ bàn phím) + Hiển thị danh sách Nhân viên nhập hình + Nhập vào mã nhân viên bất kỳ, tìm kiếm xem nhân viên có mã tương ứng lưu danh sách, nếu tìm thấy hiển thị thơng tin tương ứng viên mà hình Ngược lại, thơng báo khơng tìm thấy.’ Bài 3) Viết chương trình thực yêu cầu sau: - Định nghĩa cấu trúc Giangvien gồm thông tin: Mã giảng viên, Tên giảng viên, Học vị, Mức lương - Cài đặt cấu trúc danh sách Liên kết đơn, với thao tác: 1)Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3)Chèn nút vào danh sách; 4) Duyệt danh sách; 5) Xóa phần tử danh sách - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập vào danh sách gồm n giảng viên (n bất kỳ) + Nhập vào mã giảng viên bất kỳ, tìm kiếm xem nhân viên có mã tương ứng lưu danh sách, nếu có xóa khỏi danh sách + Hiển thị danh sách trước sau xóa hình Bài 4) Viết chương thực cơng việc sau: - Định nghĩa cấu trúc Sách, bao gồm trường thông tin sau: Mã sách, Tên sách,Tên tác giả, Năm xuất bản, Nhà xuất bản, Giá thành - Cài đặt cấu trúc danh sách liên kết đơn, với thao tác khởi tạo danh sách, Tạo nút chứa liệu, Chèn nút vào danh sách, Xóa nút khỏi danh sách, Duyệt danh sách - Chương trình chính: + Nhập từ bàn phím thơng tin N sách (N số nguyên dương bất kỳ) lưu vào danh sách tạo Hiển thị danh sách nhập hình + Sắp xếp (giảm dần) danh sách nhập theo năm xuất + Hiển thị danh sách nhập hình Bài 5) Viết chương thực công việc sau: - Định nghĩa cấu trúc Khách hàng, bao gồm trường thông tin (mã KH, loại KH, Họ tên, Địa chỉ, Số ĐT) - Cài đặt cấu trúc danh sách liên kết đơn, với thao tác khởi tạo danh sách, Tạo nút chứa liệu, Chèn nút vào danh sách, Xóa nút khỏi danh sách, Duyệt danh sách - Chương trình chính: + Nhập danh sách gồm n khách hàng (n bất kỳ) + Sắp xếp danh sách theo chuỗi họ tên khách hàng (thứ tự alphabet) + Hiển thị danh dách hình Bài 6) Viết chương thực cơng việc sau: - Định nghĩa cấu trúc Dự án, gồm trường thông tin (mã dự án, Tên dự án, Kiểu dự án, Tổng kinh phí) – kiểu dự án gồm: nhỏ, trung bình lớn (1 điểm) - Cài đặt cấu trúc danh sách liên kết đơn, với thao tác khởi tạo danh sách, Tạo nút chứa liệu, Chèn nút vào danh sách, Xóa nút khỏi danh sách, Duyệt danh sách - Chương trình chính: + Nhập danh sách gồm n dự án (n bất kỳ) + Sắp xếp danh sách theo tổng kinh phí thuật toán Bubble_Sort + Hiển thị danh dách hình + Bài 7) Viết chương trình thực yêu cầu sau: - Định nghĩa cấu trúc Sách, bao gồm trường thông tin sau: Mã sách, Tên sách,Tên tác giả, Năm xuất bản, Nhà xuất bản, Giá thành Cài đặt cấu trúc danh sách liên kết đơn, với thao tác: 1)Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3)Chèn nút vào danh sách; 4) Duyệt danh sách; 5) Sắp xếp danh sách nhập theo năm xuất (tăng dần) - Chương trình chính: Sử dụng thao tác để: + Tạo danh sách liên kết đơn bao gồm n sách (n số nguyên dương bất kỳ) lưu vào danh sách tạo + Hiển thị danh sách sách nhập hình + Hiển thị danh sách xếp theo năm xuất hình Bài 8: Viết chương trình cài đặt cấu trúc DSLK đơn với thao tác tương ứng - Chương trình chính: o Nhập vào DSLK đơn chứa n số nguyên o Tìm phần tử dương nhỏ phần tử âm lớn danh sách o Nhập vào số nguyên x bất kỳ, kiểm tra xem x xuất lần (có nút chứa giá trị x) danh sách? o Xóa khỏi danh sách tất nút chứa giá trị x tìm thấy bước DANH SÁCH LIÊN KẾT ĐƠI Bài 9) Viết chương trình thực công việc sau: - Định nghĩa cấu trúc Định nghĩa cấu trúc Sinh Viên bao gồm trường thông tin sau: Mã lớp, Mã sinh viên, Tên sinh viên, Ngày sinh (kiểu Date, gồm trường thông tin ngày, tháng, năm), Điểm môn 1, Điểm môn 2, Điểm môn - Cài đặt cấu trúc danh sách liên kết đôi, với thao tác: 1) Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3) Chèn nút vào danh sách; 4) Duyệt danh sách; 5) Tìm kiếm nút danh sách, 6) xóa phần tử danh sách - Chương trình chính: + Tạo danh sách liên kết đôi lưu n Sinh viên + Hiển thị danh sách nhập hình + Sắp xếp danh sách theo thứ tự tăng dần tổng điểm (điểm môn 1+ điểm môn 2+ điểm môn 3) Hiển thị danh sách hình + Nhập vào tên sinh viên bất kỳ, hiển thị hình đầy đủ thơng tin sinh viên có tên trùng với tên vừa nhập + Nhập vào mã sinh viên bất kỳ, tìm kiếm xem sinh viên có mã tương ứng lưu danh sách chưa? Nếu tìm thấy, xóa khỏi danh sách Bài 10) Viết chương trình thực công việc sau: - Định nghĩa cấu trúc Định nghĩa cấu trúc Phân số bao gồm trường thông tin sau: tử số, mẫu số - Cài đặt cấu trúc danh sách liên kết đôi, với thao tác: 1) Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3) Chèn nút vào danh sách; 4) Duyệt danh sách; 5) Tìm kiếm nút danh sách, 6) xóa phần tử danh sách - Chương trình chính: + Tạo danh sách liên kết đôi lưu n phân số + Hiển thị danh sách nhập hình + Tìm phân số lớn nhỏ danh sách, hiển thị kết hình + Sắp xếp danh sách theo thứ tự giảm dần, hiển thị danh sách hình Bài 11) Viết chương trình thực cơng việc sau: - Định nghĩa cấu trúc Mặt hàng, bao gồm trường thông tin (mã hàng, Tên hàng, Nhóm hàng, Giá bán) – Nhóm hàng là: Hàng thời trang, Hàng tiêu dùng, Hàng điện máy, Hàng gia dụng - Cài đặt cấu trúc danh sách liên kết đôi, với thao tác: 1) Khởi tạo danh sách; 2) Tạo nút chứa liệu; 3) Chèn nút vào danh sách; 4) Duyệt danh sách; 5) Tìm kiếm nút danh sách, 6) xóa phần tử danh sách - Chương trình chính: + Tạo danh sách liên kết đơi chứa n mặt hàng từ bàn phím sử dụng thao tác cài đặt + Hiển thị danh sách tạo hình + Sắp xếp danh sách tạo theo thứ tự tăng dần mã hàng, hiển thị danh sách hình + Nhập vào mã hàng bất kỳ, kiểm tra xem mã hàng vừa nhập lưu danh sách chưa? Nếu chưa, nhập đầy đủ thơng tin mặt hàng có mã vừa nhập chèn vào danh sách theo thứ tự (khơng làm tính NGĂN XẾP, HÀNG ĐỢI Bài 12) Viết chương trình thực yêu cầu sau: - Cài đặt cấu trúc ngăn xếp mảng, với thao tác: 1) Khởi tạo ngăn xếp; 2) Kiểm tra ngăn xếp rỗng; 3) Kiểm tra ngăn xếp đầy; 4) Đưa phần tử vào ngăn xếp, 5) lấy phần tử khỏi ngăn xếp - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập vào số nguyên dương N bất kỳ, sử dụng cấu trúc ngăn xếp để in biểu diễn nhị phân N Ví dụ: N = 11 Biểu diễn nhị phân: 1011 Bài 13) Viết chương trình thực yêu cầu sau: - Cài đặt cấu trúc ngăn xếp mảng, với thao tác: 1) Khởi tạo ngăn xếp; 2) Kiểm tra ngăn xếp rỗng; 3) Kiểm tra ngăn xếp đầy; 4) Đưa phần tử vào ngăn xếp, 5) lấy phần tử khỏi ngăn xếp - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập vào số nguyên dương N (hệ số 10), sử dụng cấu trúc ngăn xếp để in giá trị hệ số N hình: Ví dụ: n = 104210 20228 Bài 14: Dùng Stack kiểm tra tính hợp lệ Ví dụ 1: (()()()()) hợp lệ Ví dụ 1: (())()()) khơng hợp lệ Gợi ý: Đọc dấu từ trái sang phải: - Nếu gặp dấu ( đưa vào ngăn xếp - Nếu gặp dấu ) pop dấu khỏi ngăn xếp + Nếu gặp dấu ) mà ngăn xếp rỗng -> BT sai + Nếu duyệt hết biểu thức ngăn xếp không rỗng ->BT sai + Nếu duyệt chưa hết biểu thức ngăn xếp rỗng ->BT Bài 15) Viết chương trình thực yêu cầu sau: - Cài đặt cấu trúc hàng đợi, với thao tác: 1) Khởi tạo hàng đợi; 2) Kiểm tra hàng đợi rỗng; 3) Kiểm tra hàng đợi đầy; 4) Đưa phần tử vào hàng đợi; 5) Lấy phần tử khỏi hàng đợi (4 điểm) - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập vào số nguyên dương N + Sử dụng cấu trúc hàng đợi để tính tổng chữ số N (5 điểm) Ví dụ: N = 1996 Tổng = + + + = 25 Bài 16: Viết chương trình cài đặt cấu trúc Stack danh sách liên kết với thao tác tương ứng Sử dụng cấu cấu trúc Stack để chuyển số từ hệ thập phân (cơ số 10) sang hệ thập lục phân (cơ số 16) Gợi ý: - Nhập vào số nguyên hệ thập phân - Chia liên tiếp số cho 16 Lấy phần dư theo chiều ngược lại CÂY NHỊ PHÂN Bài 17) Viết chương trình thực yêu cầu sau: - Định nghĩa cấu trúc tìm kiếm nhị phân, với thao tác: 1) Khởi tạo cây, 2) Tạo nút cây; 3) Chèn nút vào cây; 4) Tìm kiếm nút cây; 5) Duyệt - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập N số nguyên từ bàn phím lưu vào (2 điểm) + Duyệt theo thứ tự trước (Node-Left-Right) hiển thị giá trị vị trí nút hình + Nhập vào số ngun x, tìm kiếm xem nút có giá trị x lưu cây? Nếu tìm thấy hiển thị hình vị trí nút vừa tìm Ngược lại, thơng báo khơng tìm thấy nút Bài 18) Viết chương trình thực yêu cầu sau: - Định nghĩa cấu trúc tìm kiếm nhị phân, với thao tác: 1) Khởi tạo cây, 2) Tạo nút cây; 3) Chèn nút vào cây; 4) Tìm kiếm nút cây; 5) Duyệt - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập n ký tự từ bàn phím lưu vào + Duyệt theo thứ tự (Left- Node-Right), hiển thị giá trị vị trí nút hình + Nhập vào ký tự c bất kỳ, tìm kiếm xem nút có chứa ký tự c lưu cây? Nếu tìm thấy hiển thị hình vị trí nút vừa tìm Ngược lại, thơng báo khơng tìm thấy nút Bài 19) Viết chương trình thực yêu cầu sau: Viết chương trình ngơn ngữ C/C++ thực cơng việc sau: - Định nghĩa cấu trúc Nhân viên, bao gồm trường thông tin (Mã nhân viên, Họ tên, Địa chỉ, Số ĐT, Bậc lương, Ngày công) - Định nghĩa cấu trúc tìm kiếm nhị phân, với thao tác như: - Khởi tạo cây, - Chèn nút vào cây, - Tìm kiếm nút cây, - Duyệt cây, - Xóa nút khỏi - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập thơng tin N Nhân viên từ bàn phím lưu vào cấu trúc tìm kiếm nhị phân (lấy trường Mã nhân viên làm khóa) + Nhập Mã nhân viên từ bàn phím, tìm xem nút có giá trị khóa trùng với mã nhân viên vừa nhập, nếu tìm thấy xóa nút khỏi + Hiển thị thơng tin lưu trữ sau xóa nút Bài 20) Viết chương trình ngơn ngữ C/C++ thực cơng việc sau: - Định nghĩa cấu trúc tìm kiếm nhị phân, với thao tác như: - Khởi tạo cây, - Chèn nút vào cây, - Tìm kiếm nút cây, - Duyệt cây, - Xóa nút khỏi - Chương trình chính: Sử dụng thao tác cài đặt để: + Nhập N số nguyên từ bàn phím lưu vào + Duyệt theo thứ tự trước (Node-Left-Right) hiển thị hình giá trị lưu + Nhập số ngun bất ký từ bàn phím Tìm xem giá trị lưu trữ cây? Nếu tìm được, xóa nút tương ứng khỏi Hiển thị lại thơng tin sau XÓA CODE GIẢI Bài 1: #include using namespace std; struct sv{ int malop; int masv; char ten[50]; char qq[50]; int nams; struct node{ int data; node *left,*right; }; typedef node* tree; void Init(tree &root){ root=NULL; } node* taonut(int x){ node *p=new node; if(p==NULL) return NULL; p->data=x; p->left=p->right=NULL; return p; } int chennut(tree &root,node *p){ if(root!=NULL){ if(root->data==p->data) return 0; if(root->data>p->data) chennut(root->left,p); else chennut(root->right,p); } else root=p; } void NLR(tree root){ if(root!=NULL){ coutdataright,x); } else return NULL; } void huy(tree &root){ if(root!=NULL){ huy(root->left); huy(root->right); delete root; } } int main(){ tree root; Init(root); int i,x,n; coutn; for(i=0;idata) chennut(root->left,p); else chennut(root->right,p); } else root=p; } void LNR(tree root){ if(root!=NULL){ LNR(root->left); coutleft); huy(root->right); delete root; } } int main(){ tree root; Init(root); int i,n; char x; coutn; for(i=0;ileft,x); if(root->dataright,x); node *p=root; if(root->left==NULL) root =root->right; else if(root->right==NULL) root=root->left; else thaythe(p,root->right); delete p; } node *search(tree root,int x){ if(root!=NULL){ if(root->data==x) return root; if(root->data>x) return search(root->left,x); else return search(root->right,x); } return NULL; } void huy(tree &root){ if(root!=NULL){ huy(root->left); huy(root->right); delete root; } } int main(){ tree root; Init(root); int i,n,x; coutn; for(i=0;i