Реализация ОЧЕРЕДИ на базе ccылок.
3.1 Реализация.
1) Сделать очередь пустой.(Процедура)
2) Проверить наличие элементов в очереди.(Функция)
3) Добавить элемент в конец очереди.(Процедура)
4) Взять элемент из начала очереди.(Процедура)
5) Удалить элемент из начала очереди.(Процедура)
6) Удалить очередь.(Процедура)
3.2 Процедуры и функции.
3.2.1 Основные типы и переменные :
Пусть Type InformType=byte;{Информационная часть}
QPtr=^Queue1;
Queue1=record
inf:InformType;
next:QPtr;
end;
var a:qptr;
3.2.2 Алгоритмы :
{Очередь пуста или нет.}
function NilExist(а:QPtr):boolean;
begin
NilExist:=a=nil;
end;
{Добавить элемент в конец очереди.}
procedure AddElem(var a:QPtr;inf:InformType);
var k,l:QPtr;
begin
New(l);
l^.inf:=inf;
l^.next:=nil;
if a<>nil then
begin
k:=a;
while k^.next<>nil do k:=k^.next;
k^.next:=l;
end else
a:=l;
end;
{Взять элемент из начала очереди.}
procedure GetElem(a:QPtr;var inf:InformType); begin
if a<>nil then inf:=a^.inf;
end;
{Удалить элемент из начала очереди.}
procedure DelElem(Var a:Qptr);
var n:QPtr;
begin
n:=a;
a:=a^.next;
dispose(n)
end;
{Удалить очередь.} procedure DelQueue(var stack:TS);
begin
while a<>nil do DelElem(a);
end;