Đị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. Mộ
Trang 1Ngăn Xếp
1 Định nghĩa
Ngăn xếp là một dạng của danh sách, trong đó phép tố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
Trang 22 Cac 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
tur nay cho x
Trang 3Vi dụ: Nếu S là ngăn xếp, S=(a, a,, a,) và đỉnh của ngăn xếp 6 đầu bên phải khi thực hiện push(x,S) ta được S=(a,, a., a, x) nếu n>=1 thì khi thực hiện pop(S,x) ta được S=(a,, a, a,,)
Trang 44 Cài đặt danh sách bởi máng
Ngăn xếp S= (a,, a., a.) được biểu diễn bởi mảng như hình sau:
Trang 5Const max = N;
Type Item = ; Stack = record
Top: 0 max;
Element array[1 max] of Item; End;
Trang 6- - 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);
Trang 7Procedure push( x:ltem, var S: Stack, var ok : boolean); Begin
With s do
Trang 9Procdure pop(var S:Stack, var X:Item, var ok:boolean);
Begin
With S do
If empty(S) then ok:= false
Trang 105 Cài đặt ngăn xếp bởi danh sách liên kết w s a n ——>- địa —L> eee ——>- a, ——>-
Type Stack = “cell; Cell = record
Infor: Item; Next: Stack; End;
Trang 11- Các thủ tục và hàm thể hiện phép toán trên ngăn xếp được cài
đặt bởi danh sách liên kết
Procedure initialize(Var S:Stack);
Trang 15Procedure POP(Var S : Stack; Var X : Item; Var OK : Boolean); Var P : Stack;
Begin
If Empty(S) Then OK := False