Nội dung của giáo trình bao gồm 9 chương: giới thiệu chung; thiết kế và phân tích giải thuật; đệ quy; mảng và danh sách tuyến tính; danh sách móc nối; cây; đồ thị; sắp xếp; tìm kiếm. Mời các bạn cùng tham khảo giáo trình để nắm chắc kiến thức.
MỤC LỤC MỤC LỤC Chương 1: GIỚI THIỆU CHUNG .3 1.1 Thuật toán cấu trúc liệu: 1.2 Một số vấn đề liên quan: 1.3 Ngôn ngữ diễn đạt thuật toán: Ngơn ngữ diễn đạt thuật tốn quy ước sử dụng giáo trình ngơn ngữ tựa C++ .3 1.3.1 Cấu trúc chương trình chính: 1.3.2 Các ký tự: 1.3.3 Các câu lệnh: 1.3.4 Chương trình con: .5 Chương 2: ThiẾt kẾ phân tích thuẬt TỐN 2.1 Thiết kế thuật toán: 2.1.1 Module hoá thuật toán: .7 2.1.2 Phương pháp tinh chỉnh bước: 2.2 Phân tích thuật tốn: 2.2.1 Tính đắn: 2.2.2 Mâu thuẫn tính đơn giản tính hiệu quả: 2.2.3 Phân tích thời gian thực thuật toán: Chương 3: đỆ quy (RecursiON) 11 3.1 Đại cương: .11 3.2 Phương pháp để thiết kế thuật toán đệ quy: .12 3.3 Thuật toán quay lui: 15 Chương 4: MẢng danh sách tuyẾn tính 17 4.1 Mảng cấu trúc lưu trữ mảng: 17 4.2 Danh sách tuyến tính (Linear list): 18 4.3 Ngăn xếp (Stack): 19 4.3.1 Định nghĩa: .19 4.3.2 Lưu trữ Stack mảng: 19 4.3.3 Các ví dụ: 20 4.3.4 Stack với việc cài đặt thuật toán đệ quy: 23 4.4 Hàng đợi (Queue): 25 4.4.1 Định nghĩa: .25 4.4.2 Lưu trữ Queue mảng: .26 Chương 5: danh sách móc nỐi (LINKED LIST) .28 5.1 Danh sách móc nối đơn: 28 5.1.1 Tổ chức danh sách nối đơn: 28 5.1.2 Một số phép toán danh sách nối đơn: 28 5.2 Danh sách nối vòng: 30 5.2.1 Nguyên tắc: .30 5.2.2 Thuật toán bổ sung loại bỏ nút danh sách nối vòng: .31 5.3 Danh sách nối kép: 31 5.3.1 Tổ chức: 31 5.3.2 Một số phép toán danh sách nối kép: 31 5.4 Ví dụ việc sử dụng danh sách móc nối: 32 5.5 Stack Queue móc nối: 34 Chương 6: CÂY (TREE) 37 6.1 Định nghĩa khái niệm: 37 6.1.1 Định nghĩa: .37 6.1.2 Các khái niệm liên quan: 37 6.2 Cây nhị phân: 38 6.2.1 Định nghĩa tính chất: 38 6.2.2 Biểu diễn nhị phân: 39 6.2.3 Phép duyệt nhị phân: 40 6.2.4 Cây nhị phân nối vòng: 46 6.3 Cây tổng quát: 48 6.3.1 Biểu diễn tổng quát: 48 6.3.2 Phép duyệt tổng quát: 49 6.4 Ứng dụng (Biểu diễn biểu thức số học): 50 Chương 7: ĐỒ thỊ (GRAPH) .54 7.1 Định nghĩa khái niệm đồ thị: 54 7.2 Biểu diễn đồ thị: 55 7.2.1 Biễu diễn ma trận lân cận (ma trận kề): 55 7.2.2 Biểu diễn danh sách lân cận (danh sách kề) 55 7.3 Phép duyệt đồ thị: .56 7.3.1 Tìm kiếm theo chiều sâu: 56 7.3.2.Tìm kiếm theo chiều rộng: 57 7.4 Cây khung khung với giá cực tiểu: 58 Chương 8: SẮP XẾP 60 8.1 Đặt vấn đề: .60 8.2 Một số phương pháp xếp đơn giản: 60 8.2.1 Sắp xếp kiểu lựa chọn: .60 8.2.2 Sắp xếp kiểu chèn: 60 8.2.3 Sắp xếp kiểu bọt: 61 8.3 Sắp xếp kiểu phân đoạn (Sắp xếp nhanh - quick sort): 61 8.4 Sắp xếp kiểu vun đống (Heap sort): 62 8.5 Sắp xếp kiểu trộn (Merge sort): .63 Chương 9: tìm kiẾm 65 9.1 Bài tốn tìm kiếm: 65 9.2 Tìm kiếm tuần tự: 65 9.3 Tìm kiếm nhị phân: 65 9.4 Cây nhị phân tìm kiếm: 65 Tài liỆu Tham khẢo 68 CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Thuật toán cấu trúc liệu: Theo Niklaus Wirth: Thuật toán + Cấu trúc liệu = Chương trình Ví dụ: Cho dãy phần tử, biểu diễn dạng mảng danh sách Cấu trúc liệu thuật tốn có mối quan hệ mật thiết với việc nghiên cứu cấu trúc liệu sau đôi với việc xác lập thuật toán xử lý cấu trúc 1.2 Một số vấn đề liên quan: Lựa chọn cấu trúc liệu thích hợp để tổ chức liệu vào sở xây dựng thuật toán xử lý hữu hiệu nhằm đưa tới kết mong muốn cho toán khâu quan trọng Ta cần phân biệt loại quy cách liệu: • Quy cách biểu diễn hình thức: Cịn gọi cấu trúc logic liệu Đối với ngơn ngữ lập trình xác định có cấu trúc logic liệu Dữ liệu thuộc loại cấu trúc cần phải có mơ tả kiểu liệu tương ứng với cấu trúc liệu Ví dụ: Trong C có kiểu liệu: Struct, Union, File, • Quy cách lưu trữ: cách biểu diễn cấu trúc liệu nhớ Ví dụ: Cấu trúc liệu mảng lưu trữ nhớ theo quy tắc lưu trữ Có quy cách lưu trữ: Lưu trữ trong: ví dụ RAM Lưu trữ ngồi: ví dụ đĩa (disk) 1.3 Ngơn ngữ diễn đạt thuật tốn: Ngơn ngữ diễn đạt thuật tốn quy ước sử dụng giáo trình ngơn ngữ tựa C++ Đặc điểm: Gần giống với Turbo C++, dễ dàng việc chuyển chương trình viết ngơn ngữ tựa C++ sang ngôn ngữ C++ 1.3.1 Cấu trúc chương trình chính: void main() { S1; S2; Sn; Các lệnh chương trình dùng để diễn tả thuật tốn } Lưu ý: • Để đơn giản, chương trình khơng cần viết khai báo Tuy nhiên mơ tả trước chương trình ngơn ngữ tự nhiên • Phần thuyết minh đặt dấu /* , */ // để ghi dịng Ví dụ: void main() /* Chuong trinh chuyen so he 10 he 2*/ { cout > n; /* Nhap n la so he cs 10*/ T=0; while (n!=0) { r = n % 2; Push(T, r); n = n / 2; } cout Left; R=Bo(Q); R->Left=S; Free(p); return; TÀI LIỆU THAM KHẢO [1] Cấu trúc liệu thuật tốn (Đỗ Xn Lơi) [2] Lập trình nâng cao PASCAL với cấu trúc liệu (Larry Hoff - Lê Minh Trung dịch) - Tập [3] Cẩm nang thuật toán ( Robert Sedgewick) - tập [4] The Art of Computer Programming (donald Knuth) [5] Algorithm + Data Structure = Program (Niklaus Wirth) [6] Cấu trúc liệu thuật toán, Đinh Mạnh Tường, Nhà Xuất ĐHQG Hà Nội, 2008 [7] T Cormen, C E Leiserson, R L Rivest, Introduction to Algorithms, Cambridge, MIT Press, 2nd Edition, 2005 ... sách Cấu trúc liệu thuật tốn có mối quan hệ mật thiết với việc nghiên cứu cấu trúc liệu sau đôi với việc xác lập thuật toán xử lý cấu trúc 1.2 Một số vấn đề liên quan: Lựa chọn cấu trúc liệu. .. trúc logic liệu Đối với ngơn ngữ lập trình xác định có cấu trúc logic liệu Dữ liệu thuộc loại cấu trúc cần phải có mô tả kiểu liệu tương ứng với cấu trúc liệu Ví dụ: Trong C có kiểu liệu: Struct,... đạt thuật toán quy ước sử dụng giáo trình ngơn ngữ tựa C++ Đặc điểm: Gần giống với Turbo C++, dễ dàng việc chuyển chương trình viết ngơn ngữ tựa C++ sang ngôn ngữ C++ 1.3.1 Cấu trúc chương trình