Unit Stack; INTERFACE Procedure Stack_Init (var s:TStack); Procedure Stack_Push (var s:TStack; e:Telem); Function Stack_Pop (var s:TStack):Telem; Procedure ReadTerm (var a:string); IMPLEMENTATION Procedure Stack_Init(var s:tstack); {Инициализация стека. Вход: Ничего, список задается по умолчанию Выход: Созданный стек} Begin s:=nil End; Procedure Stack_Push(var s:TStack; e:Telem); {Помещение элемента в стек. Вход: Стек, элемент для помещения в стек Выход: Стек с помещенным элементом} Var z:TStack; Begin New(z); Z^.Info:=e; Z^.Next:=s; s:=z End; Function Stack_Pop(var s:TStack):Telem; {Извлечение элемента из стека. Вход: Стек Выход: Элемент, извлеченный из верхушки стека} Var z:TStack; Begin z:=s; s:=s^.Next; Stack_Pop:=z^.Info; z^.Next:=Nil; Dispose(z) End; Procedure ReadTerm(var a:string); {Чтение выражения. Вход: Элементы выражения Выход: Строка, состоящая из элементов выражения} Begin Readln(a) End; End.