Laboratorium informatyki II. Język Pascal. Semestr letni.
Ćwiczenie 9.
Drzewa i grafy
Cel ćwiczenia: projektowanie algorytmów wykorzystujących drzewa i grafy; tworzenie
i usuwanie drzewa poszukiwań binarnych; znajdowanie w drzewie elementu o ustalonej wartości klucza; wyprowadzanie zawartości drzewa na ekran; metody reprezentacji grafów;
lista incydencji, macierz incydencji i macierz sąsiedztwa wierzchołków.
1. Opracować procedury umożliwiające obsługę drzewa poszukiwań binarnych określonego za pomocą definicji type L = ^dbin; dbin = record klucz: integer; lewy, prawy: L; end;
var pocz: L (wierzchołek - początek drzewa) („lewe” następniki węzła zawierają elementy o wartościach mniejszych, natomiast „prawe” następniki węzła elementy
o wartościach większych). Zaprojektować procedury: a) dodawania losowego elementu (np. losowa liczba z przedziału od 0 do 100) do drzewa (element powinien być wstawiony do drzewa z zachowaniem porządku); b) znajdowania i wyświetlania elementu o podanej wartości klucza; c) wyświetlania na ekranie zawartości drzewa (w postaci drzewa lub posortowanego ciągu kluczy zawartych w drzewie); d) usuwania całego drzewa (zwolnić pamięć). Odpowiednie procedury zrealizować w postaci opcji w programie. Wyświetlić stan pamięci na początku i na końcu programu (MemAvail).
2. Opracować procedurę, która umożliwia przeczytanie z pliku tekstowego igraf0.txt listy incydencji grafu skierowanego (elementy listy są zapisane wierszami i oddzielone
spacjami), a następnie wyświetlenie skonstruowanej listy oraz związanych z nią macierzy sąsiedztwa wierzchołków i macierzy incydencji (pętlę własną, tj. krawędź wychodzącą i dochodzącą do tego samego wierzchołka oznaczać w macierzy incydencji cyfrą 2).
Zapisać macierz sąsiedztwa wierzchołków w pliku tekstowym mgraf0.txt wierszami. Lista incydencji grafu jest zdefiniowana w sposób następujący:
Type Pnode = ^Tnode;
Tnode = record na: integer; nextN: Pnode; end; { wierzchołki incydentne }
Type Plista = ^Tlista;
Tlista = record nb: integer; firstN: Pnode; nextL: Plista; end; { wierzchołki grafu }
--- --- --- | | | | | |
| Tlista |---->| Tnode |--->| Tnode | | | | | | |
--- --- --- |
| --- | |
| Tlista |----> ...
| | ---