Реферат: Отображение АСД на СДХ

По организации поля указатель на другое звено:

-однонаправленные;

-двунаправленные;

-мультиссылочные (когда один элемент структуры связан с несколькими другими элементами).

Заметим, что в случае мультиссылочного звена по некоторым направлениям мы можем иметь двунаправленную связь между звеньями, а по некоторым - однонапрвленную.

2.3. Представление графов

При представлении графов можно использовать несколько подходов:

- использовать звенья только для представления вершин, а дуги отображать через указатели; недостатком здесь является то, что негде отобразить информацию, например, о весе дуги, а так же - в случае неориентированного графа одной дуге будет соотвествовать два указателя.

- использовать звенья для дуг, а вершины отображать как ссылки между дугами инцидентными одной и той же вершине; в этом подходе затруднено представление оринетированных дуг, а так же инфомации о вершиных;

- наконец можно ввести два вида звеньев один для представления дуг, другой для представления вершин; звенья-дуги увязываются в список, звенья-вершины также увязываются в список с перекрестными ссылками между списками.

Особый случай представляют нерегулярные графы, т.е. графы в которых степень вершин - величина переменная. В этом случае используются специальные служебные звенья из двух полей-указателей. Одно поле служит для ссылки на двругое аналогичное звено, а второе поле - для ссылки на соотвествующий элемент структуры.

2.4. Представление стека и очереди

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

type

звено = record тело: char; следующий:связь end;

связь = Iзвено;

var тело:char;

стек:связь;

procedure загрузить (тело:char;var стек:связь);

var элемент:связь;

begin new(элемент); элементI.тело:=тело;элементI.следующий:=стек;

стек:=элемент

end{загрузить}

procedure выгрузить (var тело:char;var стек:связь);

var использованный:связь;

begin ifnot(стек = nil) then

begin тело := стекI.тело; использованный:= стек;

стек:=стекI.следующий; dispose(использованный) end

else write ('стекпуст')

end{загрузить}

Обратите внимание на значение оператора dispose.

К-во Просмотров: 450
Бесплатно скачать Реферат: Отображение АСД на СДХ