Bài giảng Cấu trúc dữ liệu và giải thuật: Ngăn xếp và hàng đợi - Phan Mạnh Hiển (2020)
Số trang: 34
Loại file: pdf
Dung lượng: 1.13 MB
Lượt xem: 15
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 và hàng đợi. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
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 - Phan Mạnh Hiển (2020)Ngăn xếp và Hàng đợi(Stacks and Queues)Nguyễn Mạnh Hiểnhiennm@tlu.edu.vnNội dung1. Ngăn xếp2. Hàng đợi1. Ngăn xếpNgăn xếp• Một danh sách theo kiểu vào sau ra trước LIFO (Last In First Out)• Ba thao tác cơ bản (xảy ra ở đỉnh ngăn xếp): − push: Thêm phần tử − pop: Xóa phần tử − top: Truy nhập phần tử• Các thao tác khác: − Lấy kích thước − Kiểm tra rỗngCài đặt ngăn xếp – cách 1• Cài đặt bằng danh sách liên kết đơn: head• Các thao tác: − push: gọi thao tác pushFront 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 đơnCà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• push(e): topOfStack++, theArray[topOfStack] = e• pop: topOfStack--• top: return theArray[topOfStack]• Chú ý: Khi ngăn xếp rỗng thì topOfStack = -1Một số ứng dụng của ngăn xếp• Cân bằng thẻ (tag) trong một trang HTML• Định giá biểu thức hậu tốĐị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 tổ chức biểu thức dưới dạng hậu tố (toán tử viết sau các toán hạng của nó) rồi ứng dụng ngăn xếp, tính tuần tự từ trái sang phải sẽ cho kết quả đúng (tức là 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 ∗ +Quy tắcDuyệt các thành phần (toán hạng/toán tử) trongbiểu thức 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ử: − Lấy hai toán hạng ra khỏi ngăn xếp và áp dụng toán tử − Đặt kết quả vào ngăn xếpVí dụ• Định giá biểu thức 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt bốn toán hạng đầu tiên vào ngăn xếp6523+8∗+3+∗• Đọc “+”, lấy 3 và 2 ra, cộng lại được 5, đặt 5 vào ngăn xếp6523+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 - Phan Mạnh Hiển (2020)Ngăn xếp và Hàng đợi(Stacks and Queues)Nguyễn Mạnh Hiểnhiennm@tlu.edu.vnNội dung1. Ngăn xếp2. Hàng đợi1. Ngăn xếpNgăn xếp• Một danh sách theo kiểu vào sau ra trước LIFO (Last In First Out)• Ba thao tác cơ bản (xảy ra ở đỉnh ngăn xếp): − push: Thêm phần tử − pop: Xóa phần tử − top: Truy nhập phần tử• Các thao tác khác: − Lấy kích thước − Kiểm tra rỗngCài đặt ngăn xếp – cách 1• Cài đặt bằng danh sách liên kết đơn: head• Các thao tác: − push: gọi thao tác pushFront 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 đơnCà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• push(e): topOfStack++, theArray[topOfStack] = e• pop: topOfStack--• top: return theArray[topOfStack]• Chú ý: Khi ngăn xếp rỗng thì topOfStack = -1Một số ứng dụng của ngăn xếp• Cân bằng thẻ (tag) trong một trang HTML• Định giá biểu thức hậu tốĐị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 tổ chức biểu thức dưới dạng hậu tố (toán tử viết sau các toán hạng của nó) rồi ứng dụng ngăn xếp, tính tuần tự từ trái sang phải sẽ cho kết quả đúng (tức là 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 ∗ +Quy tắcDuyệt các thành phần (toán hạng/toán tử) trongbiểu thức 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ử: − Lấy hai toán hạng ra khỏi ngăn xếp và áp dụng toán tử − Đặt kết quả vào ngăn xếpVí dụ• Định giá biểu thức 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt bốn toán hạng đầu tiên vào ngăn xếp6523+8∗+3+∗• Đọc “+”, lấy 3 và 2 ra, cộng lại được 5, đặt 5 vào ngăn xếp6523+8∗+3+∗• Đặt 8 vào ngăn xếp
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu và giải thuật Cấu trúc dữ liệu và giải thuật Cấu trúc dữ liệu Cơ sở dữ liệu Ngăn xếp và hàng đợiTài liệu liên quan:
-
62 trang 403 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 320 0 0 -
13 trang 298 0 0
-
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 296 0 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 291 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 259 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 248 0 0 -
Giáo trình về dữ liệu và các mô hình cơ sở dữ liệu
62 trang 189 0 0 -
8 trang 186 0 0