nextupprevious

Next:5.13 Грамматика
Up:5 Выбор представления данных
Previous:5.11 Корневое дерево


5.12 Система дорог

В н е ш н е е представление системы односторонних или двусторонних дорог можно выбирать по аналогии с представлением графов:

система-дорог ::= количество-городов {пробел дорога}*
дорога ::= откуда пробел куда пробел длина-дороги
откуда ::= куда ::= количество-городов ::= натуральное-число
длина-дороги ::= цифра {цифра}*.цифра {цифра}*

Для в н у т р е н н е г о представления системы дорог можно использовать любой из подходов, описанный для представления ориентированного графа. Например, можно использовать абстрактный тип СистемаДорог со следующим набором операций:

ПервДорога (СистемаДорог, Город): Дорога;
СледДорога (Дорога): Дорога;
ДлинаДороги (Дорога): Real;
КонецДороги(Дорога): Город;

Реализация этого абстрактного типа на языке Zonnon с последовательным распределением памяти под города и связанным распределением памяти под списки дорог может иметь следующий вид:

record {public, ref} Дорога;
var {public} Конец:Город;
        Длина: Real;
        След:Дорога;
end Дорога;
const N =20; (*Количество городов*)
type Город=integer;  СистемаДорог=array N of Дорога;
procedure ПервДорога(var S:СистемаДорог; K:Город):Дорога;
        begin ПервДорога:=S[K] end;
procedure СледДорога(D:Дорога):Дорога;
        begin СледДорога:=D.След end;
procedure ДлинаДороги(D:Дорога):Real;
        begin ДлинаДороги:=D .Длина end;
procedure КонецДороги(D:Дорога):Город;
        begin КонецДороги:=D.Конец end.

Отметим, что, как и раньше, мы снова оставляем в стороне набор процедур для перестройки системы дорог, если таковая требуется в алгоритме.
 

Next:5.13 Грамматика
Up:5 Выбор представления данных
Previous:5.11 Корневое дерево


© В.Н. Касьянов, Е.В.Касьянова, 2004