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
Số trang: 33
Loại file: pdf
Dung lượng: 1,004.58 KB
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, 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ểnNgăn xếp & Hàng đợi(Stack & Queue)Nguyễn Mạnh HiểnKhoa Công nghệ thông tinhiennm@tlu.edu.vnNgăn xếp (stack)• Một danh sách theo kiểu vào sau ra trước LIFO (Last In First Out)• Các thao tác chỉ xảy ra ở đỉnh ngăn xếp (topOfStack) − push: Thêm phần tử − pop: Xóa phần tử − top: Truy nhập phần tử ở đỉnh ngăn xếp ba thao tác đều chỉ mất thời gian hằng O(1)Cài đặt ngăn xếp (1)• Bằng danh sách liên kết đơn: head• Các thao tác: − push: chèn vào đầu danh sách (push_front) − pop: xóa khỏi đầu danh sách (pop_front) − top: truy nhập phần tử ở đầu danh sách (front) Cài đặt ngăn xếp (2) • Cài đặt bằng mảng (theArray): 0 1 2 3 4 5 6 7 8 2 8 3 5theArray topOfStack = 3 • push: topOfStack++, theArray[topOfStack] = x • pop: topOfStack-- • top: return theArray[topOfStack] • Chú ý khi ngăn xếp rỗng: topOfStack = -1Các ứng dụng của ngăn xếp• Cân bằng ký hiệu trong mã nguồn, cân bằng thẻ (trong một trang HTML)• Định giá biểu thức hậu tố• Chuyển biểu thức từ trung tố sang hậu tố• Tổ chức các lời gọi hàmĐịnh giá biểu thức hậu tố• Ví dụ: cần đị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 18,69 đúng − Máy tính giản đơn (tính tuần tự từ trái sang phải) 19,37 sai !• Nếu tổ chức biểu thức dưới dạng hậu tố và ứng dụng ngăn xếp sẽ tính đúng mà không cần biết độ ưu tiên của các toán tử 4,99 1,06 ∗ 5,99 + 6,99 1,06 ∗ +Định giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Quy tắc: − Gặp toán hạng đặt 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ả trở lại ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt bốn toán hạng đầu vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đọc “+”, lấy 3 và 2 ra, cộng lại được 5 và đặt 5 vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt 8 vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đọc “∗”, lấy ra 8 và 5, nhân vào được 40 và đặt vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đọc “+”, lấy ra 40 và 5, cộng lại được 45 và đặt 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ểnNgăn xếp & Hàng đợi(Stack & Queue)Nguyễn Mạnh HiểnKhoa Công nghệ thông tinhiennm@tlu.edu.vnNgăn xếp (stack)• Một danh sách theo kiểu vào sau ra trước LIFO (Last In First Out)• Các thao tác chỉ xảy ra ở đỉnh ngăn xếp (topOfStack) − push: Thêm phần tử − pop: Xóa phần tử − top: Truy nhập phần tử ở đỉnh ngăn xếp ba thao tác đều chỉ mất thời gian hằng O(1)Cài đặt ngăn xếp (1)• Bằng danh sách liên kết đơn: head• Các thao tác: − push: chèn vào đầu danh sách (push_front) − pop: xóa khỏi đầu danh sách (pop_front) − top: truy nhập phần tử ở đầu danh sách (front) Cài đặt ngăn xếp (2) • Cài đặt bằng mảng (theArray): 0 1 2 3 4 5 6 7 8 2 8 3 5theArray topOfStack = 3 • push: topOfStack++, theArray[topOfStack] = x • pop: topOfStack-- • top: return theArray[topOfStack] • Chú ý khi ngăn xếp rỗng: topOfStack = -1Các ứng dụng của ngăn xếp• Cân bằng ký hiệu trong mã nguồn, cân bằng thẻ (trong một trang HTML)• Định giá biểu thức hậu tố• Chuyển biểu thức từ trung tố sang hậu tố• Tổ chức các lời gọi hàmĐịnh giá biểu thức hậu tố• Ví dụ: cần đị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 18,69 đúng − Máy tính giản đơn (tính tuần tự từ trái sang phải) 19,37 sai !• Nếu tổ chức biểu thức dưới dạng hậu tố và ứng dụng ngăn xếp sẽ tính đúng mà không cần biết độ ưu tiên của các toán tử 4,99 1,06 ∗ 5,99 + 6,99 1,06 ∗ +Định giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Quy tắc: − Gặp toán hạng đặt 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ả trở lại ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt bốn toán hạng đầu vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đọc “+”, lấy 3 và 2 ra, cộng lại được 5 và đặt 5 vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đặt 8 vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đọc “∗”, lấy ra 8 và 5, nhân vào được 40 và đặt vào ngăn xếpĐịnh giá: 6 5 2 3 + 8 ∗ + 3 + ∗• Đọc “+”, lấy ra 40 và 5, cộng lại được 45 và đặt vào ngăn xếp
Tìm kiếm theo từ khóa liên quan:
Cấu trúc dữ liệu và giải thuật Cấu trúc dữ liệu 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 ngăn xếp Ứng dụng của ngăn xếp Định giá biểu thức hậu tốTài liệu có liên quan:
-
62 trang 422 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 389 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 362 0 0 -
13 trang 343 0 0
-
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 319 0 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 317 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 297 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 254 0 0 -
Giáo trình về dữ liệu và các mô hình cơ sở dữ liệu
62 trang 228 0 0 -
Giáo trình Nhập môn Cơ sở dữ liệu - GV. Nguyễn Thế Dũng
280 trang 197 0 0