На этом шаге мы рассмотрим добавление нового элемента в стек..
Добавление компоненты в стек производится с использованием вспомогательного указателя:
1 шаг. В динамической области памяти резервируем место для динамического объекта pAux:
ReadLn(D2);
New(pAux);
Рис.1. Создание нового звена
2 шаг. Определим ссылку нового звена на вершину стека:
pAux^.pNext := pTop;
Рис.2. Новое звено должно указывать на вершину стека
3 шаг. Переместим указатель на вершину стека pTop на новое сформированное звено pAux:
pTop := pAux;
Рис.3. Новое звено - вершина стека
4 шаг. В информационное поле новой вершины поместим значение D2:
pTop^.Element := D2;
Рис.4. Помещаем значение переменной D2 в информационное поле новой вершины стека
Добавление последующих компонент производится аналогично.
Рассмотрим процедуру добавления элемента с информационным полем D в стек:
Procedure Add_Stack(var pTop: PtrRec; D: TypeElement); Var pAux : PtrRec; Begin New(pAux); pAux^.pNext := pTop; pTop := pAux; pTop^.Element := D; End;
Существует другой вариант построения стека.
Рассмотрим процедуру добавления в стек новой компоненты:
Procedure Add_Stack_2(var pTop: PtrRec; El:TypeElement); Var pAux : PtrRec; Begin New (pAux); pAux^.Element := El; {заполняем информационное поле нового элемента} pAux^.pNext := pTop; {создаем ссылку на предыдущий элемент} pTop := pAux; {переопределяем вершину стека} End;
Рассмотрим процедуру построения стека на основе процедуры добавления в стек новой компоненты:
Procedure Create_Stack_2(var pTop: PtrRec); Var pAux : PtrRec; elem : TypeElement; Begin New(pTop); pTop := Nil; ReadLn (elem); While elem <> 0 do Begin Add_Stack_2(pTop, elem); ReadLn (elem); End; End;
На следующем шаге мы рассмотрим удаление вершины стека.