Br1gad1r, например, так:
| Код | type T = integer; { <--- Для простоты замены типа данных }
stack = ^node; node = record value: T; next: stack; end;
function empty_stack(s: stack): boolean; begin empty_stack := (s = nil); end;
procedure push(var s: stack; X: T); var p: stack; begin new(p); p^.value := X; p^.next := s;
s := p; end;
procedure pop(var s: stack; var X: T); var p: stack; begin if s = nil then exit else begin p := s;
X := s^.value; s := s^.next;
dispose(p); end end;
var top: stack; i: integer; begin top := nil;
for i := 1 to 10 do push(top, 4 * i);
while not empty_stack(top) do begin
pop(top, i); write(i:3);
end; writeln; end. |
Если пользоваться встроенными типами Паскаля, то можно pop сделать функцией, я сделал ее процедурой для более объей реализации, например, стек структур (функция в Турбо Паскале не сможет вернуть структуру, только через Var параметр процедуры)... |