{ Функция поиска страны (узла графа) по имени страны }
function GetPtr(aName : char): PNode;
{ Взять из P_57_1 }
end;
{ Функция создает новую страну (узел) }
function MakeNode(aName : Char): PNode;
{ Взять из P_57_1 }
end;
{ Процедура установки связи узла p1 с узлом p2 }
procedure Link(p1, p2 : PNode);
{ Взять из P_57_1 }
end;
{ Процедура чтения графа из текстового файла.}
procedure ReadData(var F: Text);
{ Взять из P_57_1 }
end;
{ Помещение указателя на узел в глобальную очередь Que }
procedure PutInQue(arg: PNode);
var p: PLink;
begin
New(p); { создаем новую переменную-связь }
p^.mLink:= arg; { размещаем указатель на узел }
{ размещаем указатель в голове очереди }
p^.mNext:= Que; { указатель на предыдущую запись }
Que:=p; { текущая запись в голове очереди }
end;
{ Извлечение из очереди указателя на узел }
function GetFromQue(var arg: Pnode): boolean;
var p, q: PLink;
begin
GetFromQue:= Assigned(Que);
if Assigned(Que) then begin
{ Поиск последнего элемента (хвоста) очереди }
p:= Que; q:=p;
{ если в очереди только один элемент, цикл не выполнится ни разу! }
while Assigned(p^.mNext) do begin
q:=p; { текущий }
p:=p^.mNext; { следующий }
end;
{ p и q указывают на последний и предпоследний элементы }
arg:= p^.mLink;
if p=q { если в очереди был один элемент… }
then Que:= nil { очередь стала пустой }
else q^.mNext:= nil; { а иначе "отцепляем" последний элемент }
Dispose(p); { освобождаем память последнего элемента }
end;