Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 83 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
83
Dung lượng
2,23 MB
Nội dung
1 Chương 5: NGĂN XẾP – HÀNG ĐỢI (Stack - Queue) Nội dung Ngăn xếp (Stack) Hàng đợi (Queue) Chương 5: Ngăn xếp – Hàng đợi Nội dung Ngăn xếp (Stack) Khái niệm Stack Các thao tác Stack Hiện thực Stack Ứng dụng Stack Chương 5: Ngăn xếp – Hàng đợi Stack - Khái niệm Stack danh sách mà đối tượng thêm vào lấy đầu danh sách (A stack is simply a list of elements with insertions and deletions permitted at one end) Vì thế, thao tác Stack thực theo chế LIFO (Last In First Out - Vào sau trước) Chương 5: Ngăn xếp – Hàng đợi Stack – Các thao tác Stack hỗ trợ thao tác chính: Push: Pop: Thêm đối tượng vào Stack Lấy đối tượng khỏi Stack Ví dụ: 523 Stack hỗ trợ số thao tác khác: isEmpty(): Kiểm tra xem Stack có rỗng không Top(): Trả giá trị phần tử nằm đầu Stack mà khơng hủy khỏi Stack Nếu Stack rỗng lỗi xảy Chương 5: Ngăn xếp – Hàng đợi Stack – Hiện thực Stack (Implementation of a Stack) Mảng chiều Kích thước stack thiếu, lúc thừa Push / Pop phức tạp Chương 5: Ngăn xếp – Hàng đợi Danh sách LK Cấp phát động! Push/Pop dễ dàng Hiện thực Stack dùng mảng (Implementation of a Stack using Array) Có thể tạo Stack cách khai báo mảng chiều với kích thước tối đa N (ví dụ: N =1000) Stack chứa tối đa N phần tử đánh số từ đến N-1 Phần tử nằm đỉnh Stack có số top Như vậy, để khai báo Stack, ta cần mảng chiều, biến số nguyên top cho biết số đỉnh Stack: struct Stack { DataType list[N]; int top; }; Chương 5: Ngăn xếp – Hàng đợi Hiện thực Stack dùng mảng (tt.) (Implementation of a Stack using Array) Các hàm cần cài đặt: Init( Stack &s ): Khởi tạo Stack isEmpty( Stack s ) Push( Stack &s , DataType x ) Pop( Stack &s ) Top( Stack &s ) Khi cài đặt mảng chiều, Stack bị giới hạn kích thước nên cần xây dựng thêm thao tác phụ cho Stack: isFull(): Kiểm tra xem Stack có đầy chưa, Stack đầy, việc gọi đến hàm Push() bị lỗi Chương 5: Ngăn xếp – Hàng đợi Hiện thực Stack dùng mảng (tt.) (Implementation of a Stack using Array) Khởi tạo Stack: void Init (Stack &s) { s.top = 0; } Chương 5: Ngăn xếp – Hàng đợi Hiện thực Stack dùng mảng (tt.) (Implementation of a Stack using Array) 10 Kiểm tra Stack có rỗng hay khơng: Rỗng: hàm trả Ngược lại: hàm trả int isEmpty(Stack s) { if ( s.top==0 ) return 1; // stack rỗng else return 0; } Chương 5: Ngăn xếp – Hàng đợi