Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab7.docx
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
33 Кб
Скачать
☆

Vertex:array[1..50] of PtrVer; {масив суміжних вершин }

k, {КІЛЬКІСТЬ суміжних вершин }

number:integer; {номер вершини }

mark: boolean; {ознака відвідування вершини }

end;

pelem = ^TElem; {тип покажчика на елемент черги }

telem = record {тип елемента черги }

PVer: PtrVer; {покажчик на поточну вершину }

PFrom : PElem; {покажчик на попередню вершину }

Prev, {покажчик на попередній елемент черги }

Next:PElem; {покажчик на наступний елемент черги }

end;

Var pBeg,pEnd, {покажчики на початок і кінець черги }

PCur:PElem; {покажчик на поточний елемент черги }

f:text; {текстовий файл зі списком суміжності }

key:char; {символ вибраної користувачем дії }

start, {номер початкової вершини обходу графу}

finish:integer; {номер кінцевої вершини обходу }

a:array[1..50] of PtrVer; {масив покажчиків на вершини графу }

n: integer; {кількість вершин графу }

{======== встановлення зв'язків між вершинами графу ========}

procedure LinkVertex(var v,u:PtrVer);

{v.u - покажчики на вершини, що зв'язуються}

begin

{включити u в список суміжності v}

inc(v^.k); v^.vertex[v^.k]:=u;

{включити v у список суміжності u}

inc(u^.k); u^.vertex[u^.k]:=v;

end;

{===========- ініціалізація графу з файла ==================}

procedure Init;

var i, {параметр циклу }

iv,iu:integer; {номери суміжних вершин }

Ver:PtrVer; {покажчик на вершину графу }

begin

assign(f,'t.dat');

reset(f); {відкрити файл списку суміжних вершин}

readln(f,n); {зчитати кількість вершин графу }

for i:=1 to n do {створити масив покажчиків на }

begin {вершини графу }

new(Ver); {виділити пам'ять для покажчика }

Ver^.number:=i; {визначити номер вершини }

Ver^.k:=0; {задати кількість суміжних вершин }

a[i]:=Ver; {записати покажчик на вершину в масив }

end;

while not eof(f) do {поки не досягнуто кінця файла }

begin

readln(f, iv, iu); {читати номери суміжних вершин }

LinkVertex(a[iv], a[iu]); {зв'язати вершини }

end;

close(f); {закрити файл }

end;

{=============== додавання елемента до черги ==========================}

procedure AddList(v:PtrVer; q:pelem);

{v - покажчик на вершину, що додається до черги;

q - покажчик на попередній елемент черги}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]