AlgoDat SoSe2000, Aufgabe 65
Christian Semrau

a, b) Bildliche Darstellung ohne gekreuzte Kanten:

c) Kantenliste:
8,13, 1,3, 1,8, 3,6, 3,5, 4,2, 4,7, 5,4, 5,7, 6,4, 6,5, 7,2, 8,3, 8,6

d) Knotenliste:
8, 2,3,8, 0, 2,5,6, 2,2,7, 2,4,7, 2,4,5, 1,2, 2,3,6

e) Adjazenzmatrix:
12345678
100100001
200000000
300001100
401000010
500010010
600011000
701000000
800100100

f) Adjazenzliste:
13, 8
2 
35, 6
42, 7
54, 7
64, 5
72
83, 6

Kantenliste realisiert als int[], wobei der Index 0 die Knoten, der Index 1 die Kanten zählt, die übrigen Elemente sind (in Paaren zusammengefasst) die Kanten.
Knotenliste realisiert als int[], Index 0 speichert die Knotenanzahl, danach die ausgehenden Kanten jedes Knoten entsprechend der Nummerierung, indem erst die Anzahl der Kanten und dann die Zielknoten angegeben werden.
Die Realisierung als LinkedList ist in beiden Darstellungen günstiger (verbessert Einfügen und Löschen, ändert nichts an der Suchdauer).

Adjazenzmatrix realisiert z.B. als int[][], wobei die Größe in beiden Indizes der Knotenanzahl entspricht. Das Element [i][k] gibt an, ob eine Kante von Knoten i zum Knoten k führt (Werte 0 oder 1).

Adjazenzliste realisiert z.B. als LinkedList[] (ermöglicht direkten Zugriff auf die einzelnen Listen). Jede Liste speichert die Zielknoten ausgehender Kanten eines Knoten. Eine andere mögliche Implementierung, die einzelne Operationen beschleunigt, ist ein Array von sortierten Binärbäumen (ermöglicht logarithmischen Aufwand bei Kantenoperationen).