Реализация СТЕКА на базе вектора. Ну это должно быть всем понятно! Приведено
так - для порядка....
2.1 Реализация.
1) Проверить наличие элементов в стеке.(Функция)
2) Проверить стек полон.(Функция)
3) Добавить элемент в стек.(Процедура)
4) Взять элемент из стека.(Процедура)
5) Удалить элемент из стека.(Процедура)
6) Удалить стек.(Процедура)
2.2 Процедуры и функции.
2.2.1 Основные типы и переменные :
Введем константу Nmax - максимальное кол-во элементов в стеке.
Пусть const Nmax=100;
Type InformType=byte;{Информационная часть}
VectType=array[1..Nmax] of InformType;
TS=^stack;
stack=record
vect:VectType;
t:0..Nmax;
end;
var a:st;
2.2.2 Алгоритмы :
{Проверить наличие элементов в стеке.(Стек пуст или нет)}
function NilExist(stack:TS):boolean;
begin NilExist:=stack.t=0; end;
{Стек полон или нет ?}
function FullExist(stack:TS):boolean;
begin FullExist:=stack.t=Nmax; end;
{Добавить элемент в стек.}
procedure AddElem(var stack:TS;inf:InformType);
begin
if not FullExist(stack) then
begin
stack.t:=stack.t+1;
stack.vect[stack.t]:=inf;
end;
end;
{Взять элемент из стека.}
procedure GetElem(stack:TS;var inf:InformType);
begin
if not FullExist(stack) then inf:=stack.vect[stack.t];
end;
{Удалить элемент из стека.}
procedure DelElem(Var stack:TS);
begin
if not NilExist(stack) then stack.t:=stack.t-1;
end;
{Удалить стек.}
procedure DelStack(var stack:TS);
begin
stack.t:=0;
end;