Шаг 18.
Добавление нового элемента в стек

    На этом шаге мы рассмотрим добавление нового элемента в стек..

    Добавление компоненты в стек производится с использованием вспомогательного указателя:

    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;

    На следующем шаге мы рассмотрим удаление вершины стека.




Предыдущий шаг Содержание Следующий шаг