Реализация ОЧЕРЕДИ на базе вектора.
4.1 Реализация.
1) Сделать очередь пустой.(Процедура)
2) Проверить наличие элементов в очереди.(Функция)
3) Добавить элемент в конец очереди.(Процедура)
4) Взять элемент из начала очереди.(Процедура)
5) Удалить элемент из начала очереди.(Процедура)
6) Удалить очередь.(Процедура)
4.2 Процедуры и функции.
4.2.1 Основные типы и переменные :
Введем константу Nmax - максимальное кол-во элементов в очереди.
Пусть const Nmax=100;
Type InformType=byte;{Информационная часть}
VectType=array[1..Nmax] of InformType;
Queue=record
vect:VectType;
end:0..Nmax;
end;
var a:queuet;
4.2.2 Алгоритмы : {Очередь пуста или нет}
function NilExist(a:Queue):boolean;
begin
NilExist:=a.end=0;
end;
{Очередь полна или нет}
function FullExist(a:Queue):boolean;
begin
NilExist:=a.end=Nmax;
end;
{Добавить элемент в конец очереди.}
procedure AddElem(var a:Queue;inf:InformType);
begin
if not FullExist(a) then
begin
a.end:=a.end+1;
a.vect[a.end]:=inf;
end;
end;
{Взять элемент из начала очереди.}
procedure GetElem(a:Queue;var inf:InformType);
begin
if not FullExist(a) then inf:=a.vect[1];
end;
{Удалить элемент из начала очереди.}
procedure DelElem(Var a:Queue);
var i:1..Nmax;
begin
for i:=2 to a.end do
a.vect[i-1]:=a.vect[i];
a.end:=a.end-1;
if a.end<0 then a.end:=0
end;
{Удалить очередь.}
procedure DelQueue(var a:Queue);
begin
a.end:=0;
end;