Стеком называется динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу LIFO(Last-In, First-Out) – «Поступивший последним, обслуживается первым». Обычно над стеками выполняется три операции: 1) начальное формирование стека (запись первой компоненты); 2) добавление компоненты в стек; 3) выборка компоненты (удаление). Для формирования стека и работы с ним необходимо иметь две переменные типа «указатель», первая из которых определяет вершину стека, а вторая – вспомогательная. Пример. Составить программу, которая формирует стек, добавляет в него произвольное количество компонент, а затем читает все компоненты. Program STACK; uses Crt; type Alfa = String[10]; PComp = ^Comp; Comp = Record sD: Alfa; pNext: PComp end; var pTop: PComp; sC: Alfa; Procedure CreateStack(var pTop: PComp; var sC: Alfa); begin New(pTop); pTop^. pNext:= NIL; pTop^. sD:= sC; end; Procedure AddComp(var pTop: PComp; var sC: Alfa); var pAux: PComp; begin NEW(pAux); pAux^. pNext:= pTop; pTop:= pAux; pTop^. sD:= sC; end; Procedure DelComp(var pTop: PComp; var sC: ALFA); begin sC:= pTop^. sD; pTop:= pTop^. pNext; end; begin Clrscr; writeln( ВВЕДИ СТРОКУ ); readln(sC); CreateStack(pTop, sC); repeat writeln( ВВЕДИ СТРОКУ ); readln(sC); AddComp(pTop, sC); until sC = 'END';