Варинат не работает, если очередь пустая!
Реализация очереди
Type PElem = ^Elem;
Elem = record
Data: integer
Next: PElem;
End;
Var
Head,tail, p: PElem;
Begin
Head:=nil;
Tail:=nil;
P:=head;
Head:=head^.next;
{Предположим, что у нас уже есть первый и последний элементы}
P^.next:=nil;
Tail^.next:=p;
Tail:=p;
End.
Type PElem = ^Elem;
Elem = record
Data: integer
Next: PElem;
End;
Var
Head,tail, p: PElem;
Begin
Head:=nil;
Tail:=nil;
P^.next:=nil;
If head:=nil then
Head:=p
Else
Tail^.next:=p;
Tail:=p;
End.
Извлечение элемента из очереди получается такое же, как и в стеке
Type PElem = ^Elem;
Elem = record
Data: integer
Next: PElem;
End;
Var
Head,tail, p: PElem;
Begin
P:=head;
Head:=head^.next;
End.
HEAD (указатель)
Данные |
Указатель |
Данные |
Указатель |
Данные (последний элемент) |
Указатель – NIL |
Данные |
Указатель |
Type PElem = ^Elem;
Elem = record
Data: integer
Next: PElem;
End;
Var
Head,tail, p: PElem;
Begin
{Добавление}
P^.next:=p^.next;
P1^.next:=p;
{Удаление}
P1^.next:=p1^.next^.next;
End.