Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu ngăn xếp với hàng đợi cung cấp cho người đọc các kiến thức: Ngăn xếp, màng đợi, cài đặt ngăn xếp, biểu thức toán học, thuật toán Ba Lan ngược,... Mời các bạn cùng tham khảo.
CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU NGĂN XẾP VS HÀNG ĐỢI Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt CuuDuongThanCong.com NGĂN XẾP https://fb.com/tailieudientucntt Ngăn xếp Định nghĩa Ngăn xếp (stack) cấu trúc liệu dùng để lưu trữ tập hợp phần tử Hoạt động theo chế “vào sau - trước” (last in, first out LIFO); nghĩa là, ta thấy truy cập đỉnh ngăn xếp Cấu trúc liệu đề xuất hai nhà khoa học người Đức [Bauer and Samelson, 2001] CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Ngăn xếp (cont.) Một lớp cấu trúc liệu ngăn xếp bao gồm thao sau Xóa ngăn xếp Kiểm tra ngăn xếp rỗng Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp Lấy thông tin phần tử đỉnh ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa hoạt động ngăn xếp Cho ngăn xếp s rỗng Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa hoạt động ngăn xếp Cho ngăn xếp s rỗng Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa hoạt động ngăn xếp Cho ngăn xếp s rỗng Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa hoạt động ngăn xếp Cho ngăn xếp s rỗng Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Minh họa hoạt động ngăn xếp Cho ngăn xếp s rỗng Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Cài đặt ngăn xếp Kiểu liệu stack cài đặt Mảng chiều Danh sách liên kết CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Áp dụng thuật tốn Ví dụ Chuyển biểu thức trung tố P=(A+B)*(C-(D+A)) sang biểu thức hậu tố Q thuật toán Ba Lan ngược CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 15 CuuDuongThanCong.com HÀNG ĐỢI https://fb.com/tailieudientucntt Hàng đợi Định nghĩa Hàng đợi cấu trúc liệu để Dùng để lưu trữ tập liệu Hoạt động theo chế “vào trước - trước” (first in, first out - FIFO); cấu trúc liệu ngăn xếp truy xuất đến phần tử ngăn xếp CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 17 Cài đặt hàng đợi Kiểu liệu queue cài đặt Mảng chiều Danh sách liên kết CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 18 Cài đặt hàng đợi (cont.) Cài đặt lớp cho cấu trúc liệu hàng đợi queue, giống cấu trúc liệu ngăn xếp 10 11 12 13 template class Queue { private : // data }; public : void clear (); bool isEmpty (); void enqueue (T data); T dequeue (); T top (); CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 19 Minh họa hoạt động hàng đợi Cho hàng đợi s rỗng Thêm phần tử A vào hàng đợi A Thêm phần tử D vào hàng đợi D A Thêm phần tử C vào hàng đợi C D A Lấy phần tử khỏi hàng đợi C CuuDuongThanCong.com Spring 2017 D https://fb.com/tailieudientucntt Data structure & Algorithm 20 Minh họa hoạt động hàng đợi Cho hàng đợi s rỗng Thêm phần tử A vào hàng đợi A Thêm phần tử D vào hàng đợi D A Thêm phần tử C vào hàng đợi C D A Lấy phần tử khỏi hàng đợi C CuuDuongThanCong.com Spring 2017 D https://fb.com/tailieudientucntt Data structure & Algorithm 20 Minh họa hoạt động hàng đợi Cho hàng đợi s rỗng Thêm phần tử A vào hàng đợi A Thêm phần tử D vào hàng đợi D A Thêm phần tử C vào hàng đợi C D A Lấy phần tử khỏi hàng đợi C CuuDuongThanCong.com Spring 2017 D https://fb.com/tailieudientucntt Data structure & Algorithm 20 Minh họa hoạt động hàng đợi Cho hàng đợi s rỗng Thêm phần tử A vào hàng đợi A Thêm phần tử D vào hàng đợi D A Thêm phần tử C vào hàng đợi C D A Lấy phần tử khỏi hàng đợi C CuuDuongThanCong.com Spring 2017 D https://fb.com/tailieudientucntt Data structure & Algorithm 20 Minh họa hoạt động hàng đợi Cho hàng đợi s rỗng Thêm phần tử A vào hàng đợi A Thêm phần tử D vào hàng đợi D A Thêm phần tử C vào hàng đợi C D A Lấy phần tử khỏi hàng đợi C CuuDuongThanCong.com Spring 2017 D https://fb.com/tailieudientucntt Data structure & Algorithm 20 Ứng dụng hàng đợi Kiểu liệu hàng đợi dùng nhiều thuật toán Thuật toán quản lý việc xếp hàng (theo số thứ tự) ngân hàng, bệnh viện Thuật tốn tìm đường - quay lui, như: mê cung, mã tuần, hồng hậu Thuật tốn xử lý đồ họa CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 21 Thuật tốn tìm đường theo chiều rộng Algorithm Tìm đường từ đỉnh vs đến ve 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: procedure bfs_find_path(vs ,ve ) queue ← vs while queue = ∅ v ← queue Duyệt đỉnh v if v == ve then In đường kết thúc for đỉnh u kề với đỉnh v if đỉnh u chưa duyệt khơng có queue then pre [u] = v queue ← u CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 22 Áp dụng thuật toán CuuDuongThanCong.com Spring 2017 f g a e d b c Hình 1: Tìm đường https://fb.com/tailieudientucntt Data structure & Algorithm 23 Đánh giá Hãy so sánh đánh giác kiểu cài đặt Mảng Danh sách liên kết Cho kiểu liệu stack, queue CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 24 Tài liệu tham khảo Bauer, F L and Samelson, K (2001) Verfahren zur automatischen verarbeitung von kodierten daten und rechenmaschine zur ausübung des verfahrens In Pioneers and Their Contributions to Software Engineering, pages 29–40 Springer CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 25 ... Hàng đợi Định nghĩa Hàng đợi cấu trúc liệu để Dùng để lưu trữ tập liệu Hoạt động theo chế “vào trước - trước” (first in, first out - FIFO); cấu trúc liệu ngăn xếp truy xuất đến phần tử ngăn xếp. .. (cont.) Một lớp cấu trúc liệu ngăn xếp bao gồm thao sau Xóa ngăn xếp Kiểm tra ngăn xếp rỗng Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp Lấy thông tin phần tử đỉnh ngăn xếp CuuDuongThanCong.com... & Algorithm Minh họa hoạt động ngăn xếp Cho ngăn xếp s rỗng Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Thêm phần tử vào ngăn xếp Lấy phần tử khỏi ngăn xếp CuuDuongThanCong.com Spring