Straßennetz in Adjazenzlistendarstellung

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,
ich soll bei einer Aufgabe ein Straßennetz in Adjazenzlistendarstellung speichern. Ich habe also eine Klasse Kreuzung, eine Klasse Fahrspuren und eine Klasse Graph. Die Kreuzungsklasse soll eine(?) Liste mit Fahrspuren enthalten, wobei die Obergrenze 100 Fahrspuren pro Kreuzung sind. Die Graph-Klasse soll eine ein Array von Kreuzungen enthalten. Das ganze soll anschließend mit einer Queue (Breitensuche) durchsuchbar sein. Mein Problem ist, dass ich nicht verstehe, wie ich das in Java umsetzen soll, insbesondere, weil ich noch nie mit einer Adjazenzliste gearbeitet habe. Seit Beginn der Woche hänge ich nun schon an diesem Listenproblem fest.
Ich bitte um eure Hilfe und bedanke mich schon im Vorraus.
 

Caffè Latte

Bekanntes Mitglied
Hi,

was soll denn in der Adjazenzliste gespeichert werden? Kannst du mal die ganze Aufgabe posten und auch die Daten (d.h. also, in welcher Form denn das Straßennetz vorliegt).
 
G

Guest

Gast
Das Straßennetz soll in Adjazenzlistendarstellung gespeichert werden (maximal 100 Kreuzungen und damit maximal 99 ausgehende Kreuzungsverbindungen je Kreuzung)

Klassen:

-eine Klasse für Kreuzungen, die enthält:
+Namen
+visited-Feld für die Breitensuche
+Array der ausgehenden Kreuzungsverbindungen
+speichern wie viele Array-Elemente belegt

-eine Klasse für Fahrspuren, die speichert:
+Start- und die Endkreuzung
+ob die Straße befahrbar ist

-Das Straßennetz speichert
+ein Array der Kreuzungsknoten
+bietet einzelne Methoden für die einzelnen Befehle des Benutzers an
+speichern, wie viele Kreuzungen bereits im Array gspeichert

-eine Klasse Shell
+Methoden für die Benutzerinteraktion
+enthält Straßennetz und benutzt dessen Methoden
+keine Kenntnis über Klassen für Kreuzungen und Fahrspuren
+kommuniziert nur mit dem Objekt des Straßennetzes über dessen Methoden

Such-Implementierung:
Kreuzungen in der Reihenfolge der Adjazenzliste an die Queue hängen.
Einfügen einer neuen Fahrspur durch stellen dieser an das Ende der Liste der bisherigen Fahrspuren der ausgehenden Kreuzung
Wird Fahrspur als wieder befahrbar gekennzeichnet, so bleibt die Reihenfolge unverändert.
 
G

Guest

Gast
Der Graph ist vergleichbar mit diesem hier:
abkue_2.gif
 
G

Gast

Gast
was hast du denn schon?
Vieles ist ja schon recht gut vorgegeben und sollte recht einfach implementiert werden können.

Weisst du was eine Adjazensliste ist?
Weisst du was eine Adjazensmatrix ist?
 
G

Guest

Gast
Ich habe in allen Klassen fast alles, nur bei den Stellen, an denen eine Adjazenzliste gefordert wird, komme ich nicht weiter. Ich habe bereits recherchiert nach dem Begriff Adjazenzliste und auch einige Erklärungen gefunden, trotzdem will es mir einfach nicht gelingen hier eine solche zu implementieren.
 
G

Guest

Gast
Kann mir wenigstens jemand sagen, wie man eine Adjazenzliste in diesem Fall erstellt.
Also wie sie hier konkret aussehen würde - bitte die komplette Java-Syntax posten.
 

nebulo

Bekanntes Mitglied
Eine Adjazenzliste sieht folgendermaßen aus:

Gegeben ein Graph G=(V,E) wobei V die Menge der Knoten ist V={A,B,C,D,...} und E die Menge der Kanten E={(A,B),(A,D),...}

Eine Adjazenzliste funktioniert nun folgendermaßen: Jeder Knoten hat eine Liste mit Zeigern auf die Knoten die von dem Knoten aus erreichbar sind.

In obigen Fall würde A also ein Liste mit Referenzen auf B und D enthalten.

Ich denke jetzt solltest du dass auf deine Aufgabe übertragen können.

Gruß nebulo
 
G

Guest

Gast
Soweit habe ich des ganze auch verstanden, nur die syntaktische Umsetzung bereitet mir enorme Probleme.
Wie würde das also konkret in Java aussehen?
 

nebulo

Bekanntes Mitglied
Als Adjazenzliste kannst du irgendeine Java-Collection verwenden z.B. eine ArrayList. In die du dann ganz normal die Referenzen auf die Knoten (Kreuzungen) aufnimmst.
 
G

Guest

Gast
Und genau da ist mein Problem. Ich habe noch nie mit einer Java-Collection gearbeitet und entweder finde ich nur keine Passende oder es will mir nur nicht gelingen so eine zu verwenden (Hört sich vielleicht etwas komisch an, beschreibt aber meine Situation am Besten). Jedenfalls läuft beides auf das gleiche hinaus: ich komme einfach nicht weiter.

Deswegen frage ich nochmal:

Welche Java-Collection soll ich verwenden und wie wende ich sie an?
 

nebulo

Bekanntes Mitglied
Also wenn ich die Aufgabe richtig verstehe nimmst du am Besten eine ArrayList.

Code:
ArrayList<Fahrspur> adjazenzListe = new ArrayList<Fahrspur>();

Allerdings ist mir bei der Aufgabe nicht ganz klar warum in Fahrspur Anfangs und Endpunkt gespeichert werden soll. Aber ist ja kein Problem.

Dann erstellst du also dein Fahrspur-Objekt und fügst es mit adjazenzListe.add(...) der AdjazenzListe hinzu.
 
G

Guest

Gast
Warum ist mein Compiler mit diesem Code nicht einverstanden?
P.S. Ich hab bereits nachgeforscht. Muss ich vielleicht in meiner Klasse etwas in der Form
Code:
import.javablbla
unterbringen? Falls ja was genau und wo?
 
G

Guest

Gast
Bitte helft einem armen Anfänger :( , der noch nie mit einer Java-Collection gearbeitet hat.
Schließlich ist aller Anfang schwer. :wink:
 

nebulo

Bekanntes Mitglied
Bei eclipse kannst du benötigte Packete automatisch importieren.

Rechtsklick auf die Klasse und dann im Popup-Menü auf "Source" und dann auf "organize imports".
 
G

Guest

Gast
Syntax error, parameterized types are only available if source level is 5.0.

Was soll das denn schon wieder bedeuten?
 

nebulo

Bekanntes Mitglied
Du hast Java <= 1.5.0 . Laß mal einfach die <> Klammern weg. Ggf. musst du dann später wenn du etwas aus der Liste holen willst einen TypeCast machen.
 

Saxony

Top Contributor
Oder er stellt mal das compliance Level auf 5.0 oder 6.0. :)

In Eclipse:
Wondow->Preferences->Java->Compiler und dort dann ganz oben.
Vorraussetzung:
eine einigermaßen aktuelle Eclipse Version für den Build-In Compiler oder eine neue externe JDK installation, welche unter Eclipse auch verwendet wird.

bye Saxony
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben