Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi - Nguyễn Mạnh Hiển (HKI năm 2020-2021)
Số trang: 36
Loại file: pdf
Dung lượng: 1.33 MB
Lượt xem: 11
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi cung cấp cho người học các kiến thức về ngăn xếp, cài đặt ngăn xếp, các ứng dụng của ngăn xếp, định giá biểu thức hậu tố, ngăn xếp thời gian chạy, cài đặt hàng đợi,... Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi - Nguyễn Mạnh Hiển (HKI năm 2020-2021)Ngăn xếp và Hàng đợi(Stacks and Queues)Nguyễn Mạnh Hiểnhiennm@tlu.edu.vn 2Nội dung1. Ngăn xếp2. Hàng đợi 31. Ngăn xếp 4Ngăn xếp• Một danh sách các phần tử theo kiểu vào sau ra trước: LIFO (Last In First Out)• Ba thao tác chính, xảy ra ở đỉnh ngăn xếp và chỉ mất thời gian O(1): − push: Thêm phần tử. − pop: Xóa phần tử. − top: Trả về phần tử. (pop và top có thể kết hợp thành một thao tác)• Các thao tác khác: − Lấy kích thước − Kiểm tra rỗng 5Cài đặt ngăn xếp – cách 1• Cài đặt bằng danh sách liên kết đơn: head• Cài đặt các thao tác: − push(e): Gọi thao tác pushFront(e) của DSLK đơn. − pop: Gọi thao tác popFront của DSLK đơn. − top: Gọi thao tác front của DSLK đơn. 6Cài đặt ngăn xếp – cách 2• Cài đặt bằng mảng: 0 1 2 3 4 5 6 7 8 theArray 2 8 3 5 topOfStack (= 3)• Cài đặt các thao tác: − push(e): topOfStack++, theArray[topOfStack] = e − pop: topOfStack-- − top: return theArray[topOfStack] 7Một số ứng dụng của ngăn xếp• Cân bằng thẻ (tag) trong trang HTML• Định giá biểu thức hậu tố• Ngăn xếp lời gọi hàm (xem trong sách) 8Cân bằng thẻ trong trang HTMLKiểm tra hai yêu cầu sau đây:1. Mỗi thẻ mở phải có thẻ đóng tương ứng: something 2. Hai cặp thẻ khác nhau có thể lồng nhau nhưng không được bắt chéo nhau: something OK something Lỗi 9Ban đầu ngănxếp rỗng 10Gặp thẻ mở, thêmnó vào ngăn xếp 11Gặp thẻ mở, thêmnó vào ngăn xếp 12Gặp thẻ mở, thêmnó vào ngăn xếp 13Gặp nội dung,không làm gì cả 14Gặp thẻ đóng, lấy một thẻra khỏi ngăn xếp, xem cókhớp nhau không 15 Gặp thẻ đóng, lấy một thẻ ra khỏi ngăn xếp, xem có khớp nhau khôngKhi đã quét hết trangHTML và ngăn xếp rỗng,trang HTML là chuẩn! 16Định giá biểu thức hậu tố• Giả sử phải định giá biểu thức trung tố sau: 4,99 ∗ 1,06 + 5,99 + 6,99 ∗ 1,06 − Máy tính khoa học sẽ cho kết quả 18,69 đúng. − Máy tính giản đơn (tính tuần tự từ trái sang phải) sẽ cho kết quả 19,37 sai.• Nếu viết lại biểu thức trên dưới dạng hậu tố (toán tử nằm sau các toán hạng của nó) rồi áp dụng ngăn xếp, ta chỉ cần tính tuần tự từ trái sang phải mà không cần quan tâm độ ưu tiên của các toán tử: 4,99 1,06 ∗ 5,99 + 6,99 1,06 ∗ +(Có thể dùng ngăn xếp để chuyển đổi biểu thức trung tố thành biểuthức hậu tố xem thêm trong sách) 17Định giá biểu thức hậu tố (tiếp)Duyệt các thành phần (toán hạng/toán tử) trong biểuthức hậu tố từ trái sang phải:• Gặp toán hạng: − Đặt nó vào ngăn xếp.• Gặp toán tử: 1. Lấy hai toán hạng ra khỏi ngăn xếp và áp dụng toán tử lên hai toán hạng đó. 2. Đặt kết quả tính toán vào ngăn xếp. 18Ví dụ định giá biểu thức hậu tố• Định giá biểu thức sau: 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt bốn toán hạng đầu tiên vào ngăn xếp. 196523+8∗+3+∗• Đọc “+”, lấy 3 và 2 ra, cộng lại được 5, đặt 5 vào ngăn xếp. 206523+8∗+3+∗• Đặt 8 vào ngăn xếp.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi - Nguyễn Mạnh Hiển (HKI năm 2020-2021)Ngăn xếp và Hàng đợi(Stacks and Queues)Nguyễn Mạnh Hiểnhiennm@tlu.edu.vn 2Nội dung1. Ngăn xếp2. Hàng đợi 31. Ngăn xếp 4Ngăn xếp• Một danh sách các phần tử theo kiểu vào sau ra trước: LIFO (Last In First Out)• Ba thao tác chính, xảy ra ở đỉnh ngăn xếp và chỉ mất thời gian O(1): − push: Thêm phần tử. − pop: Xóa phần tử. − top: Trả về phần tử. (pop và top có thể kết hợp thành một thao tác)• Các thao tác khác: − Lấy kích thước − Kiểm tra rỗng 5Cài đặt ngăn xếp – cách 1• Cài đặt bằng danh sách liên kết đơn: head• Cài đặt các thao tác: − push(e): Gọi thao tác pushFront(e) của DSLK đơn. − pop: Gọi thao tác popFront của DSLK đơn. − top: Gọi thao tác front của DSLK đơn. 6Cài đặt ngăn xếp – cách 2• Cài đặt bằng mảng: 0 1 2 3 4 5 6 7 8 theArray 2 8 3 5 topOfStack (= 3)• Cài đặt các thao tác: − push(e): topOfStack++, theArray[topOfStack] = e − pop: topOfStack-- − top: return theArray[topOfStack] 7Một số ứng dụng của ngăn xếp• Cân bằng thẻ (tag) trong trang HTML• Định giá biểu thức hậu tố• Ngăn xếp lời gọi hàm (xem trong sách) 8Cân bằng thẻ trong trang HTMLKiểm tra hai yêu cầu sau đây:1. Mỗi thẻ mở phải có thẻ đóng tương ứng: something 2. Hai cặp thẻ khác nhau có thể lồng nhau nhưng không được bắt chéo nhau: something OK something Lỗi 9Ban đầu ngănxếp rỗng 10Gặp thẻ mở, thêmnó vào ngăn xếp 11Gặp thẻ mở, thêmnó vào ngăn xếp 12Gặp thẻ mở, thêmnó vào ngăn xếp 13Gặp nội dung,không làm gì cả 14Gặp thẻ đóng, lấy một thẻra khỏi ngăn xếp, xem cókhớp nhau không 15 Gặp thẻ đóng, lấy một thẻ ra khỏi ngăn xếp, xem có khớp nhau khôngKhi đã quét hết trangHTML và ngăn xếp rỗng,trang HTML là chuẩn! 16Định giá biểu thức hậu tố• Giả sử phải định giá biểu thức trung tố sau: 4,99 ∗ 1,06 + 5,99 + 6,99 ∗ 1,06 − Máy tính khoa học sẽ cho kết quả 18,69 đúng. − Máy tính giản đơn (tính tuần tự từ trái sang phải) sẽ cho kết quả 19,37 sai.• Nếu viết lại biểu thức trên dưới dạng hậu tố (toán tử nằm sau các toán hạng của nó) rồi áp dụng ngăn xếp, ta chỉ cần tính tuần tự từ trái sang phải mà không cần quan tâm độ ưu tiên của các toán tử: 4,99 1,06 ∗ 5,99 + 6,99 1,06 ∗ +(Có thể dùng ngăn xếp để chuyển đổi biểu thức trung tố thành biểuthức hậu tố xem thêm trong sách) 17Định giá biểu thức hậu tố (tiếp)Duyệt các thành phần (toán hạng/toán tử) trong biểuthức hậu tố từ trái sang phải:• Gặp toán hạng: − Đặt nó vào ngăn xếp.• Gặp toán tử: 1. Lấy hai toán hạng ra khỏi ngăn xếp và áp dụng toán tử lên hai toán hạng đó. 2. Đặt kết quả tính toán vào ngăn xếp. 18Ví dụ định giá biểu thức hậu tố• Định giá biểu thức sau: 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt bốn toán hạng đầu tiên vào ngăn xếp. 196523+8∗+3+∗• Đọc “+”, lấy 3 và 2 ra, cộng lại được 5, đặt 5 vào ngăn xếp. 206523+8∗+3+∗• Đặt 8 vào ngăn xếp.
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu Cấu trúc dữ liệu và giải thuật Bài giảng Cấu trúc dữ liệu Cơ sở dữ liệu Ngăn xếp và hàng đợi Cài đặt hàng đợiGợi ý tài liệu liên quan:
-
62 trang 402 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 378 6 0 -
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
13 trang 294 0 0
-
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 293 0 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 288 0 0 -
Tài liệu học tập Tin học văn phòng: Phần 2 - Vũ Thu Uyên
85 trang 256 1 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 246 0 0 -
8 trang 186 0 0
-
Giáo trình về dữ liệu và các mô hình cơ sở dữ liệu
62 trang 185 0 0