
pascal_lections
.pdf
P
Top |
10 |
3
1
5
NIL
Удаление элемента стека
1 исходное состояние
VAL
?
Top |
P |
10 |
? |
3 |
? |
1 |
|
5 |
|
|
NIL |
2 извлечение информации из информационного поля вершины стека Тор в переменную VAL и установка на вершину стека вспомогательного указателя Р
VAL:=Top^.Info;
P:=Top;
VAL
10
Top |
P |
10
3
1
5
NIL
3 перемещение указателя вершины стека Тор на следующий элемент и освобождение памяти, занимаемой «старой» вершиной стека
61

Top:=P^.Link;
Dispose(P);
VAL
10
P
10
Top
3
1
5
NIL
Пример. Программа создания и удаления стека из 10 элементов. Процедура Push – создает первый эл-нт и добавляет очередной эл-нт.
Процедура Pop – извлекает информацию из вершины стека и освобождает память
program stack; uses crt;
type
TPtr = ^TElem; TElem = record Info :real; Link :TPtr;
end;
var
Top :TPtr; value :real; I :integer;
procedure Push; var P:TPtr; begin
new(P);
P^.Info:=random(100)/100;
P^.Link:=Top;
Top:=P;
end;
procedure Pop(var Val:real); var P:TPtr;
begin Val:=Top^.Info; P:=Top; Top:=P^.Link; Dispose(P);
end;
BEGIN clrscr; randomize;
{nachalnye ustanovki} Top:=nil;
62
{sozdanie steka iz 10 elementov} for I:=1 to 10 do Push; {uda;enir steka}
while Top<>nil do begin
Pop(Value);
writeln(Value:4:2);
end;
END.
63