Tải bản đầy đủ (.ppt) (15 trang)

cấu trúc dữ liệu và giải thuật stack

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (148.54 KB, 15 trang )


Ngăn Xếp
1. Định nghĩa
Ngăn xếp là một dạng của danh sách, trong đó phép toán
xen một phần tử mới vào danh sách và loại bỏ một phần tử
khỏi danh sách chỉ được phép thực hiện ở một đầu của danh
sách.

2. Các phép toán trên danh sách
1 khởi tạo danh sách rỗng
Procedure intialize(var s: stack);
2 kiểm tra ngăn xếp rỗng.
Function empty (var s: stack):boolean;
3 kiểm tra ngăn xếp đầy
Function full (var s: stack):boolean;
4 Thêm một phần tử x vào đỉnh của ngăn xếp
Procedure push(x: Item, var s: stack)
5 Loại phần tử ở đỉnh của ngăn xếp và gán giá trị của phần tử
này cho x
Procedure pop(var s: stack, var x: item);

Ví dụ: Nếu S là ngăn xếp, S=(a
1
, a
2
, ... a
n
) và đỉnh của ngăn xếp ở
đầu bên phải. khi thực hiện push(x,S) ta được S=(a
1
, a


2
, ... a
n
, x).
nếu n>=1 thì khi thực hiện pop(S,x) ta được S=(a
1
, a
2
, ... a
n-1
) và
x=a
n
.

4 Cài đặt danh sách bởi mảng
Ngăn xếp S= (a
1
, a
2
, ... a
n
) được biểu diễn bởi mảng như hình sau:
1 a
1
2 a
2
.
.
.

top a
n
max

Const max = N;
Type Item =.......;
Stack = record
Top: 0...max;
Element array[1..max] of Item;
End;
Var S: stack;

-
Các thủ tục và hàm thực hiện các phép toán trên ngăn xếp.
Procedure initialize(S:Stack);
Begin
s.top: = 0;
end;
function Empty(var S:Stack):boolean;
begin
Empty:=(s.top=0);
End;
Function Full(var S: stack):boolean;
Begin
Full: =(s.top=max);
End;

×