Hallo zusammen!
Folgendes ist mein Problem:
Ich möchte einem Graphen (-> Nachbarschaftsliste) Knoten hinzufügen, und dafür eine Methode schreiben. Diese Methode bekommt einen Key und erstellt einen neuen Knoten mit genau dem übergebenen Key. Dann soll dieser neue Knoten an das Ende der Knotenliste des Graphen eingefügt werden.
Letzteres bereitet mir Schwierigkeiten, so sieht mein Code aktuell aus:
Hier noch ein paar Einzelheiten:
Jeder Graph besitzt einen Verweis auf seinen ersten Knoten (also ähnlich wie LinkedList).
Der Graph soll aus verkettete Liste von Knoten realisiert werden, dafür benutze ich die ListItem-Klasse:
Jeder Knoten selbst besitzt zusätzlich eine verkettete Liste von Kanten. Dazu habe ich folgende zwei Klassen:
Man sieht, dass jeder Node (Knoten) einen Key, sowie den Kopf auf seine Kantenliste (headEdges) besitzt.
Jede Kante hingegen besitzt einen Verweis auf den Nachbar (neighbour), sowie das Kantengewicht (weight).
Gerade die Kanten werden bei der Methode public void connectNodes(String idFrom, String idTo, W weight){...} essenziell, da ich hier die Knoten über Kanten verbinden will.
Hier ist mein Plan:
1. Erstelle eine neue Kante newEdge
2. Verweise newEdge auf den Knoten, der die OhektId idTo besitzt (Attribut neighbour)
3. Füge dann newEdge an das Ende der Kantenliste des Knotens mit ObjectId idFrom ein.
Vielen Dank für jede Antwort!!
LG TobiCodi
Folgendes ist mein Problem:
Ich möchte einem Graphen (-> Nachbarschaftsliste) Knoten hinzufügen, und dafür eine Methode schreiben. Diese Methode bekommt einen Key und erstellt einen neuen Knoten mit genau dem übergebenen Key. Dann soll dieser neue Knoten an das Ende der Knotenliste des Graphen eingefügt werden.
Letzteres bereitet mir Schwierigkeiten, so sieht mein Code aktuell aus:
Java:
package graph;
public class Graph<K extends ObjectId, W extends Sum<W> & Comparable<W>> {
public ListItem<Node<K, W>> head;
public void addNode(K key) {
Node <K,W> myNode = new Node<K,W>(key);
//TODO: add myNode zur Knotenliste des Graphen
}
}
Hier noch ein paar Einzelheiten:
Jeder Graph besitzt einen Verweis auf seinen ersten Knoten (also ähnlich wie LinkedList).
Der Graph soll aus verkettete Liste von Knoten realisiert werden, dafür benutze ich die ListItem-Klasse:
Java:
package graph;
public class ListItem<T> {
public T key;
public ListItem<T> next;
public ListItem(T key) {
this.key = key;
}
public ListItem(T key, ListItem<T> next) {
this.key = key;
this.next = next;
}
}
Jeder Knoten selbst besitzt zusätzlich eine verkettete Liste von Kanten. Dazu habe ich folgende zwei Klassen:
Java:
package graph;
public class Node<K extends ObjectId, W extends Sum<W> & Comparable<W>> {
public K key;
public ListItem<Edge<K, W>> headEdges;
public Node(K key) {
this.key = key;
}
}
Jede Kante hingegen besitzt einen Verweis auf den Nachbar (neighbour), sowie das Kantengewicht (weight).
Java:
package graph;
public class Edge<K extends ObjectId, W extends Sum<W> & Comparable<W>> {
public Node<K, W> neighbour;
public W weight;
public Edge(Node<K, W> neighbour, W weight) {
this.neighbour = neighbour;
this.weight = weight;
}
}
Gerade die Kanten werden bei der Methode public void connectNodes(String idFrom, String idTo, W weight){...} essenziell, da ich hier die Knoten über Kanten verbinden will.
Hier ist mein Plan:
1. Erstelle eine neue Kante newEdge
2. Verweise newEdge auf den Knoten, der die OhektId idTo besitzt (Attribut neighbour)
3. Füge dann newEdge an das Ende der Kantenliste des Knotens mit ObjectId idFrom ein.
Vielen Dank für jede Antwort!!
LG TobiCodi