Работа со стеком

 
 

 

 


Для работы со стеком, в отличие от очереди, необходимо иметь один основной указатель на вершину стека (возьмем идентификатор Р), который используется для выделения и освобождения памяти элементов стека.

 

Создание стека

1. Исходное состояние.

2. Выделение памяти под первый элемент стека и внесение в него информации:

new(p);

p^.inf:=x;

p^.link:=nil;

3. Установка вершины стека Endp на созданный элемент:

endp:=p;

 

Добавление элемента стека

1. Исходное состояние.

2. Выделение памяти под новый элемент стека:

new(p);

3. Внесение значения в информационное поле нового элемента и установка связи между ним и "старой" вершиной стека Endp:

p^.inf:=x;

p^.link:=endp;

4. Перемещение вершины стека Endp на новый элемент:

endp:=p;

 

Удаление элемента стека

1. Исходное состояние.

2. Извлечение информации из информационного поля вершины стека Endp в переменную x и установка на вершину стека вспомогательного указателя Р:

x:=endp^.inf;

p:=endp;

3. Перемещение указателя вершины стека Endp на следующий элемент и освобождение памяти, занимаемой "старой" вершиной стека:

endp:=p^.link;

dispose(p);