CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT (501040)
Giới thiệu
Nội dung
Một số thuật ngữ căn bản
Ngôn ngữ máy
Assembly languages
Assembler
Ngôn ngữ lập trình cấp cao
High-level Programming Languages (cont.)
Phần mềm ứng dụng và phần mềm hệ thống
PROGRAMMING LANGUAGES
The C Programming Language
The C++ Programming Language
Giải thuật
PowerPoint Presentation
Flowchart symbols
Example
Algorithms in pseudo-code
Loops
Giải thuật bằng mã giả
Giải thuật bằng ngôn ngữ lập trình
So sánh mã giả và NNLT
Giải bài toán bằng phần mềm
Lập trình hướng đối tượng (OOP)
Kiểu trừu tượng
Hiện thực và sử dụng
Cấu trúc dữ liệu
Mối quan hệ của CTDL và thuật toán
Kiểu dữ liệu trừu tượng và cấu trúc dữ liệu
Đặc điểm của OOP
Cấu trúc của đối tượng
Khai báo một class trên C++
Dùng ghi chú làm rõ nghĩa
Dùng ghi chú làm rõ nghĩa – Ví dụ
Slide 35
Mô tả stack
Ví dụ về stack
Ứng dụng: Đảo ngược danh sách
Đảo ngược danh sách – Ví dụ
Đảo ngược danh sách – Mã C++
Kiểu trừu tượng (abstract data type)
Stack trừu tượng
Thiết kế stack
Thiết kế các phương thức
Hiện thực stack liên tục
Khai báo stack liên tục
Đẩy một phần tử vào stack
Bỏ phần tử trên đỉnh stack
Thêm/Bỏ phần tử - Mã C++
Lấy giá trị trên đỉnh stack
Reverse Polish Calculator
Reverse Polish Calculator – Thiết kế chức năng
Reverse Polish Calculator – Ví dụ
Reverse Polish Calculator – Hàm get_command
Reverse Polish Calculator – Giải thuật tính toán với toán tử
Reverse Polish Calculator – Mã C++ cho toán tử cộng
Reverse Polish Calculator – Chương trình chính
Reverse Polish Calculator – Hàm do_command
Slide 59
Mô tả queue
Queue trừu tượng
Thiết kế queue
Slide 63
Mở rộng queue
Tính thừa hưởng
Queue liên tục
Queue là array vòng (circular array)
Array vòng với ngôn ngữ C++
Điều kiện biên của queue vòng
Một số cách hiện thực queue liên tục
Hiện thực queue liên tục
Khởi tạo và kiểm tra rỗng
Thêm một giá trị vào queue
Loại một giá trị khỏi queue
Thêm/loại một giá trị – Mã C++
Ứng dụng: Giả lập phi trường
Giả lập phi trường – Hàng đợi
Giả lập phi trường – Hạ cánh
Giả lập phi trường – Xử lý
Giả lập phi trường – Giả lập
Slide 81
Khái niệm đệ qui
Tính giai thừa
Thi hành hàm tính giai thừa
Trạng thái hệ thống khi thi hành hàm tính giai thừa
Bài toán Tháp Hà nội
Bài toán Tháp Hà nội – Thiết kế hàm
Bài toán Tháp Hà nội – Mã C++
Bài toán Tháp Hà nội – Thi hành
Bài toán Tháp Hà nội – Cây đệ qui
Thiết kế các giải thuật đệ qui
Đệ qui đuôi (tail recursion)
Khử đệ qui đuôi hàm giai thừa
Dãy số Fibonacci
Dãy số Fibonacci – Cây thi hành
Dãy số Fibonacci – Khử đệ qui
Slide 97
Danh sách trừu tượng
Slide 99
Chỉ số các phần tử
Phương thức insert và remove
Phương thức retrieve và replace
Phương thức traverse và tham số hàm
Hiện thực danh sách liên tục
Thêm vào một danh sách liên tục
Giải thuật thêm vào một danh sách liên tục
Mã C++ thêm vào một danh sách liên tục
Xóa từ một danh sách liên tục
Giải thuật xóa từ một danh sách liên tục
Giải thuật duyệt một danh sách liên tục
Mã C++ duyệt một danh sách liên tục
Chuỗi (string)
Cây nhị phân
Các định nghĩa khác
Các định nghĩa khác (tt.)
Các tính chất khác
Phép duyệt cây
Ví dụ về phép duyệt cây NLR
Ví dụ về phép duyệt cây LNR
Ví dụ về phép duyệt cây LRN
Cây liên kết
Giải thuật duyệt cây inorder
Cây nhị phân tìm kiếm – Binary search tree (BST)
Ví dụ BST
Các tính chất khác của BST
Tìm kiếm trên BST
Giải thuật tìm kiếm trên BST
Ví dụ tìm kiếm trên BST
Slide 129