Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Шпоры по МПиПА / Структуры данных / Стек / Pascal / Исходник / stack
.pasprogram _stack(input, output);
const
s_max = 100;
type
dtype = integer;
defarray = array [1..s_max] of dtype;
stack = record
item : defarray;
act : integer;
end;
type
darray = array [1..s_max] of dtype;
procedure new_stack(var s : stack);
begin
s.act:=0;
end; { new_stack }
procedure s_add(var s : stack; val:dtype);
begin
if (s.act<s_max) then begin
inc(s.act);
s.item[s.act]:=val;
end
else
writeln('Stack: Max numer of elements reached');
end; { s_add }
function s_get(var s : stack; var val:dtype; kill:boolean):boolean;
begin
with s do begin
if (act>0) then begin
s_get:=true;
val:=item[act];
if kill then
dec(act);
end
else
s_get:=false;
end;
end; { s_get }
procedure s_cat(a,b : stack; var c: stack);
var
i : integer;
begin
for i:=1 to a.act do
c.item[i]:=a.item[i];
for i:=1 to b.act do
c.item[i+a.act]:=b.item[i];
c.act:=a.act+b.act;
end; { s_cat }
function s_empty(var s : stack):boolean;
begin
s_empty:=(s.act=0);
end; { s_empty }
procedure s_show(s : stack);
var
i : integer;
begin
for i:=1 to s.act do
write(s.item[i]:3);
writeln;
end; { s_show }
function s_size(s : stack):integer;
begin
s_size:=s.act;
end; { s_size }
begin
end. { stack }