Структуры и алгоритмы обработки данных

       

Стек


Стек представляет собой структуру данных, из которой первым извлекается тот элемент, который был добавлен в нее последним. Стек как динамическую структуру данных легко организовать на основе линейного списка. Для такого списка достаточно хранить указатель вершины стека, который указывает на первый элемент списка. Если стек пуст, то списка не существует и указатель принимает значение nil.

Рис.1.6. Организация стека на основе линейного списка.

Приведем пример программы, реализующей стек как динамическую структуру.

Program stack;

type

element=record

                 data:string;

                 next:pointer;

       end;

var 

       n: integer;



       current:^element;

       pnt:^element;

procedure put_element(s:string); {занесение элемента в стек}

begin

       new(pnt);

       x^.data:=s;

       x^.next:=current;

       current:=pnt;

end;

procedure get_element(var s:string); {получение элемента из стека}

begin

       if current=nil then s:=-пусто- else

       begin

               pnt:=current;

               s:=pnt^.data;

               current:=pnt^.next;

               dispose(pnt);

        end;

end;

{------------program--------------}

begin

current:=nil;

repeat

          writeln(-1 v добавить в стек-);


          writeln(-2 v удалить из стека-);

          writeln(-0 v выход-);

          readln(n);

          if n=1 then

          begin

                    write(-элемент -);

                    readln(s);

                    put_element(s);

         end;

         if n=2 then

         begin

                   get_element(s);

                   writeln(s);

         end;

until n=0;

end.

В программе добавление нового элемента в стек оформлено в виде процедуры put_element, а получение элемента из стека v как процедура get_element.




Содержание раздела