verkettete Listen - Klasse Knoten

Katzenstreik

Mitglied
Hallo!

ich habe ein Verständnisproblem was die Klasse Knoten bei bspw. einer einfach verketteten Liste betrifft:

meine Klasse Knoten sieht wie folgt aus:

Java:
class Knoten {
  public vergleichbar Schluessel;
  public String text;
  public Knoten naechster
  public Knoten (vergleichbar schluessel, String text)
      {
        this.schluessel = schluessel;
        this.text = text;
    }
}

jetzt möchte ich z.B. einen neuen Knoten in meine Liste einfügen:

Java:
class Realisierung
//...
while (ticker.naechster != null)
   ticker = ticker.naechster;
ticker.naechster = neuerKnoten;
//...

Nun zu meiner Frage: Wo wird festgelegt das Knoten naechster; wirklich der nächste Knoten in meiner Liste ist? Also woher weiß meine Klasse Realisierung, dass wenn ticker.naechster angesprochen wird er den nächsten Knoten nach ticker ansprechen soll???

Was seh ich nicht oder was seh ich falsch?

Danke für eure Antworten
 

Landei

Top Contributor
So ganz verstehe ich deine Frage nicht: Jeder Knoten hat genau einen "nächsten" Knoten, und dieser wieder u.s.w. (außer dem letzten, der zeigt auf null), wie Hinweise bei einer Schnitzeljagd. Das sieht etwa so aus (O ist der Knoten, -> die Referenz auf den nächsten):
O-> O-> O-> null
Mit deinem Code suchst du das letzte O (dessen -> auf null zeigst) und fügst einen neuen Knoten Ö da an, wo vorher null war:
O-> O-> O-> Ö-> null
Ganz einfach, und der "Weg" ist immer eindeutig.
 

XHelp

Top Contributor
Weil du immer ans Ende anfügst. Wenn du also das Ende erreicht hast (kein Nachfolger -> naechster == null), dann packst du dein neues Element dahin.
P.S.
"public vergleichbar Schluessel;" ganz verkehrt: Klassennamen soltlen mit Großbuchstaben anfangen, Variablen mit Kleinbuchstaben. Außerdem ist der Name "Vergleichbar" nichtssagend. Genau so wie die Klasse "Realisierung".
 

Katzenstreik

Mitglied
genau das ist ja mein Problem. Ich verstehe nicht, wieso er weiß, dass er zum nächsten Knoten gehen soll. Ich würde es verstehen, wenn irgendwo gesagt wird Knoten != null (also schon eienr vorhanden) dann gehe zu Knoten+1 in der Liste. Aber nirgendwo wird eine solche Operation ausgeführt?!?

zu XHelp:

du hast recht, aber das ist nur ein Ausschnitt meines Codes. Der Rest ist aber für meine Frage nicht relevant.
 

XHelp

Top Contributor
A,B,C,D... sind Knoten nicht du nacheinander hinzufügst:
A -> null
du willst B anhängen. Also suchst du einen Knoten, der beim nachfolger "null" hat (Ende der Liste). Es ist also A. Bei A setzt du B als nachfolger. Und B hat von vorne rein "null" als nachfolger. Die neue Liste sieht so aus:
A -> B -> null
Jetzt willst du C dran packen. Suchst wieder den letzten Knoten, diesmal ist es B. Der Nachfolger von B wird C:
A -> B -> C -> null
usw...
 

Katzenstreik

Mitglied
hmm..

also wenn A mein erster Knoten ist, wieso ist Knoten.naechster dann B? Wer sagt das "naechster" bestimmt das B auf A folgt? Ich hab doch nirgendwo festgelegt das die Variable naechster der Nachfolger vom ersten Knoten ist.
 

fastjack

Top Contributor
Schreib mal die while-Schleife anders:

Code:
while (ticker.naechster != null) { // hier wird geprüft, ob es zum aktuellen ticker einen Nachfolger gibt
   ticker = ticker.naechster; // wenn ja, soll der aktuelle ticker auf seinen Nachfolger zeigen (dein: knoten+1)
}
ticker.naechster = neuerKnoten; // wenn nein, wird der Nachfolger des aktuellen tickers auf den neuen Knoten gesetzt, sprich die liste um ein element erweitert.

Bei diesen Aufgaben ist es sinnvoll, sich die Knoten als Kreise aufs Papier zu malen und die Zeiger durch Pfeile darzustellen. Am besten mit Bleistift ;) Irgendwann werden nämlich doppelt verkettete Listen, vor- und zurückgehen, vorne einfügen, mittendrin einfügen etc. kommen. Dadurch hast Du die aktuelle "Lage" und Zeiger immer auf dem Papier. Und wirst auch selten einen Zeiger vergessen.
 

Andi_CH

Top Contributor
hmm..

also wenn A mein erster Knoten ist, wieso ist Knoten.naechster dann B? Wer sagt das "naechster" bestimmt das B auf A folgt? Ich hab doch nirgendwo festgelegt das die Variable naechster der Nachfolger vom ersten Knoten ist.

a.naechster ist null und gar nichts anderes ;-)
Dem kannst du dann zuweisen was du willst. Was die Variable für eine Bedeutung hat definierst nur du!

Es macht natürlich Sinn, dass eine variable die "naechster" heisst auch auf den nächsten Knoten zeigt.

Java:
Knoten a = new Knoten();
a.text = "A";
// a.naechster ist null und gar nichts anderes ;-)
Knoten b = new Knoten();
b.text="B";
a.naechster = b;
// a.naechster zeigt jetzt auf den neuen Knoten
b = new Knoten();
b.text = "C";
// Der Knoten "B" ist jetzt nur noch über a.naechster greifbar
// a.naechster.naechster ist null
.........
 

Katzenstreik

Mitglied
a.naechster ist null und gar nichts anderes ;-)

wenn a.naechster immer null ist bevor ich ihm was anderes zuweise, dann macht meine while schleife ja gar keinen sinn mehr.

Weil ich bevor ich mit der while schleife beginne ich der variablen naechster nichts zugewiesen habe?!?

Wenn ich dann Werte eintrage, dann kommt naechster ja nie über null hinaus, weil am anfang gefragt wird ticker.naechster != null. und das trifft immer zu, weil die schleife doch immer am anfang der liste beginnt.

Edit: Wo weise ich der variable naechster denn das erste mal etwas zu?
 
Zuletzt bearbeitet:

ARadauer

Top Contributor
Ich würde es verstehen, wenn irgendwo gesagt wird Knoten != null (also schon eienr vorhanden) dann gehe zu Knoten+1 in der Liste. Aber nirgendwo wird eine solche Operation ausgeführt?!?

hä??

Java:
while (ticker.naechster != null)
   ticker = ticker.naechster;

machst du ja eh... man sollte den code auch lesen den man postet ;-)
 

Katzenstreik

Mitglied
aber ticker.naechster wird doch erst zu ticker, nachdem die Bedingung in der while schleife erfüllt ist. Die while schleife prüft ob ticker.naechster nciht null ist, beim ersten durchlauf ist ticker.naechster doch immer null?!? (Weil ich vorher naechster keinen wert zugewiesen habe)
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Und du hast bereits, wie mehrmals abgedeutet, alles auf einem Stück Papier nachgespielt? Alles was in der Schleife passiert, wie so eine Liste aussieht etc. Wenn ja - was verstehst du denn nicht?
 

Katzenstreik

Mitglied
ich verstehe nur nicht, welchen Wert mein Knoten naechster kurz vor der while schleife hat und wie er diesen bekommt, wenn ich bspw. annehme ich habe bereits drei Elemente in meiner Liste.
 

XHelp

Top Contributor
Davor wird wohl irgendwo stehen:
Java:
Knoten ticker = ersterKnoten;
Dem entsprechen zeigt vor der Schleife "naechster" entweder auf dein 2. Element oder es ist null.
 

Katzenstreik

Mitglied
genau,..

aber wieso weiß ticker, dass wenn ich ihm sage ticker.naechster, das das darauffolgende element gemeint ist? Der Variable "naechster" muss doch irgendwo gesagt werden, dass es auf den nächsten Knoten verweist. Ich verstehe und sehe nicht wo das passiert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Klasse in Java für doppelt verkettete Listen Java Basics - Anfänger-Themen 4
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
N verkettete Listen Java Basics - Anfänger-Themen 4
M verkettete Listen Java Basics - Anfänger-Themen 1
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
D Collections Verkettete Listen und Fußball... Java Basics - Anfänger-Themen 11
S Verkettete Listen Java Basics - Anfänger-Themen 10
S Verkettete Listen in Java Java Basics - Anfänger-Themen 11
C Methoden Verkettete listen - next methode Java Basics - Anfänger-Themen 3
I verkettete listen Java Basics - Anfänger-Themen 12
U Verkettete Listen Java Basics - Anfänger-Themen 13
M Probleme mit verkettete Listen Java Basics - Anfänger-Themen 4
M verkettete Listen Java Basics - Anfänger-Themen 39
I verkettete listen Java Basics - Anfänger-Themen 5
H Doppelt verkettete Listen Java Basics - Anfänger-Themen 2
S doppelt verkettete Listen Java Basics - Anfänger-Themen 4
X Vererbung: Doppelt verkettete Listen Java Basics - Anfänger-Themen 16
M Verkettete Liste Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
H Verkettete Liste Java Basics - Anfänger-Themen 7
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 18
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
V Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 3
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
O Verkettete Liste Java Basics - Anfänger-Themen 10
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
S Doppelt verkettete Liste Java Basics - Anfänger-Themen 3
G Doppelt Verkettete Liste Java Basics - Anfänger-Themen 2
A Doppelt Verkettete Liste Java Basics - Anfänger-Themen 16
E doppelt verkettete liste Java Basics - Anfänger-Themen 10
V Verkettete Liste. Java Basics - Anfänger-Themen 7
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
K Verkettete Liste - Methode entwerfen Java Basics - Anfänger-Themen 14
S Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 12
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
R verkettete liste ansEndeSchieben Java Basics - Anfänger-Themen 13
T Verkettete Liste Java Basics - Anfänger-Themen 14
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
B Zweifach-verkettete Liste umkehren Java Basics - Anfänger-Themen 6
X verkettete Liste Java Basics - Anfänger-Themen 13
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
kae verkettete Liste Java Basics - Anfänger-Themen 5
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
B OOP Verkettete Liste Java Basics - Anfänger-Themen 7
R verkettete liste Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 4
M verkettete liste Java Basics - Anfänger-Themen 7
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
G verkettete Liste - invertieren Java Basics - Anfänger-Themen 2
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
B verkettete Liste Java Basics - Anfänger-Themen 8
S zyklisch verkettete Liste erstellen Java Basics - Anfänger-Themen 3
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
J verkettete Liste Java Basics - Anfänger-Themen 2
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
DasDogma Verkettete Liste - Element löschen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben