Скачиваний:
31
Добавлен:
02.05.2014
Размер:
1.4 Кб
Скачать
program _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 }