Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
326,14 KB
Nội dung
Bài Cấu trúc liệu ngăn xếp Stack Stack cách tổ chức lưu trữ đối tượng dạng danh sách tuyến tính mà việc bổ sung đối tượng lấy đối tượng thực đầu danh sách Stack gọi danh sách kiểu LIFO (Last In First Out - vào sau trước) Các vấn đề cần nghiên cứu Cấu trúc liệu trừu tượng Stack (ADT Stack) Những ứng dụng Stack Cài đặt Stack dựa mảng Sự phát triển stack dựa mảng Cấu trúc liệu trừu tượng (ADT- Abtract Data Type) Các thành phần ADT Dữ liệu lưu trữ Các phép toán liệu Các điều kiện xảy lỗi kết hợp với phép tốn Ví dụ: Mơ hình ADT hệ thống kho hàng đơn giản - Dữ liệu lưu trữ theo phiếu mua/bán - Các phép tốn: + Hóa đơn buy(kho, số lượng, giá) + Hóa đơn sell(kho, số lượng, giá) + void cancel(Số hóa đơn) //Số hóa đơn Điều kiện lỗi: - Mua/bán mặt hàng khơng có kho - Hủy bỏ phiếu mà phiếu không tồn Cấu trúc liệu trừu tượng Stack Stack ADT lưu trữ đối tượng Bổ sung lấy phần tử theo kiểu “Vào sau trước” – “Last In First Out” Các phép tốn chính: push(Object o): bổ sung đối tượng o vào Stack pop(): lấy trả lại phần tử bổ sung vào cuối Stack Các phép toán bổ trợ top() trả lại tham chiếu đến phần tử bổ sung vào cuối Stack size(): trả lại số phần tử lưu trữ Stack isEmpty(): trả lại giá trị kiểu boolean để xác định Stack có lưu trữ phần tử hay không Các trường hợp ngoại lệ Ngoại lệ: việc thực phép toán mà trường hợp khơng thể thực Với Stack ADT phép tốn pop top khơng thể thực Stack rỗng Khi thực phép toán pop top Stack rỗng thi dẫn đễn ngoại lệ Stack rỗng Một số ứng dụng Stack Các ứng dụng trực tiếp • • • Lưu lại trang Web thăm trình duyệt Thứ tự Undo trình soạn thảo Lưu chữ biến hàm gọi tới hàm khác, hàm gọi lại gọi tới hàm khác, tiếp tục Các ứng dụng gián tiếp • • Cấu trúc liệu bổ trợ cho số thuật toán Là thành phần cấu trúc liệu khác Ví dụ: Sự thực hệ thống viết C++ Hệ thống viết C++ chạy giữ phần chuỗi mắt xích các hàm hoạt động Stack Khi hàm gọi, hệ thống thực đẩy vào Stack khung chứa bao gồm: - Các biến cục giá trị trả lại hàm Khi hàm trả lại giá trị, khung Stack lấy máy tiếp tục thực đến phương thức đỉnh Stack Cài đặt Stack mảng Cách đơn giản cài đặt Stack sử dụng mảng Chúng ta thực bổ sung phần tử vào từ trái qua phải Sử dụng biến t lưu số phần tử đỉnh Stack Cài đặt Stack mảng (tiếp) Mảng lưu trữ phần tử Stack dẫn đến đầy Phép tốn bổ sung phần tử dẫn đến ngoại lệ: FullStackException - Giới hạn mảng sử dụng cài đặt - Không phải chất Stack ADT Thuật toán bậc Thuật toán span1 chạy thời gian O(n2) Tính span với stack Chúng ta lưu trữ số phần tử để sử dụng “quay lại tìm kiếm” Chúng ta duyệt mảng từ trái qua phải • • • • Đặt i số Ta pop số từ Stack đến tìm thấy số j mà X[i]