Next:5.13
Грамматика
Up:5
Выбор представления данных
Previous:5.11
Корневое дерево
система-дорог ::= количество-городов {пробел дорога}*
дорога ::= откуда пробел куда пробел длина-дороги
откуда ::= куда ::= количество-городов ::= натуральное-число
длина-дороги ::= цифра {цифра}*.цифра {цифра}*
Для в н у т р е н н е г о представления системы дорог можно использовать любой из подходов, описанный для представления ориентированного графа. Например, можно использовать абстрактный тип СистемаДорог со следующим набором операций:
ПервДорога (СистемаДорог, Город): Дорога;
СледДорога (Дорога): Дорога;
ДлинаДороги (Дорога): 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
Корневое дерево