Реализация СТЕКА на базе указателей. Здесь приводятся необходимые процедуры.
Как обычно без лишних слов.
1.1 Реализация.
1) Проверить наличие элементов в стеке.(Функция)
2) Добавить элемент в стек.(Процедура)
3) Взять элемент из стека.(Процедура)
4) Удалить элемент из стека.(Процедура)
5) Удалить стек.(Процедура)
1.2 Процедуры и функции.
1.2.1 Основные типы и переменные :
Type InformType=byte;{Информационная часть}
SPtr=^stack;
stack=record
inf:InformType;
next:SPtr;
end;
var a:sptr;
1.2.2 Алгоритмы :
{Проверить наличие элементов в стеке.(Стек пуст или нет)}
function NilExist(a:SPtr):boolean;
begin NilExist:=a=nil; end;
{Добавить элемент в стек.}
procedure AddElem(var a:Sptr;inf:InformType);
var n:SPtr;
begin
new(n);
n^.inf:=inf;
n^.next:=a;
a:=n
end;
{Взять элемент из стека.}
procedure GetElem(stack:SPtr;var inf:InformType);
begin
if a<>nil then inf:=a^.inf; //присваиваем указатель на следующий элемент
end;
{Удалить элемент из стека.}
procedure DelElem(Var a:SPtr);
var n:SPtr;
begin
if a<>nil then begin
n:=a;
a:=a^.next;
dispose(n);// чистим память как порядочные люди
end;
end;
{Удалить стек.}
procedure DelStack(var a:SPtr);
begin
while a<>nil do DelElem(a);
end;