Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

hamena314

Zerschmetterling

  • "hamena314" is male
  • "hamena314" started this thread

Posts: 2,032

Date of registration: Aug 31st 2003

Location: Hannover

Occupation: Informatikstudent (d'uh)

21

Thursday, June 28th 2007, 9:10pm

Ich glaube, Neo meinte start.setNext(auto), aber darum gings mir garnicht mehr.
Mit weiterer Hilfe und viel nachdenken ist jetzt das hier zusammengekommen:

Knoten neuer = new Knoten(auto);
neuer.next = start.next;
start.setNext(neuer);

Damit funktioniert das hinzufügen wie gewollt, mit einem Blatt Papier konnte ich mir das verdeutlichen.
Zuerst hat man den start-Knoten, dessen next-Teil auf das ende, also null zeigt.
Jetzt möchte ich einen neuen Knoten einfügen und muss dazu den start.next-Zeiger auf neuer zeigen lassen. Der next-Teil von neuer muss jetzt auf den ehemaligen next-Teil von Start deuten, in dem Falle also das ende der Liste. Damit habe ich die Knoten ordnungsgemäss nacheinander aufgereiht.
Die print()-Methode funktioniert ebenfalls wie geplant, allerdings muss ich mir überlegen wo ich starte, sonst habe ich zu Beginn halt das "null" vom ersten Aufruf. Aber das Prinzip habe ich verstanden! :]
Danke erstmal soweit!

Jetzt versuche ich mich an der remove()-Methode, für die muss ich vermutlich alle Knoten wieder durchlaufen, bis der next-teil eines Knotens auf null deutet, damit wäre ich an dem hintersten Knoten angelangt, den ich entfernen möchte.
Wie Joachim schon erwähnt hat, ist das mit start- und ende-Knoten vermutlich mehr Aufwand, aber erstmal will ich nur verstehen, was eigentlich passiert und ich denke dafür lasse ich es vorläufig so.

HAVE PHUN!
Nicht der Wind bestimmt die Richtung, sondern das Segel! (Lao Xiang, China)

This post has been edited 1 times, last edit by "hamena314" (Jun 28th 2007, 9:11pm)


  • "Schokoholic" is male

Posts: 2,518

Date of registration: Oct 4th 2006

Location: Hannover

Occupation: Haarspaltung

22

Thursday, June 28th 2007, 10:51pm

Quoted

Knoten neuer = new Knoten(auto);
neuer.next = start.next;
start.setNext(neuer);

Jo, sieht doch gut aus. Nur eine Frage zum Kozept: Wieso setzt du den next-Knoten eines Knotens einmal mit Knoten.setNext(xy) und einmal Knoten.next=xy? ;)


Quoted

Jetzt versuche ich mich an der remove()-Methode, für die muss ich vermutlich alle Knoten wieder durchlaufen[...]

Soweit, so gut... aber:

Quoted

[...]damit wäre ich an dem hintersten Knoten angelangt, den ich entfernen möchte.

Nein, möchtest du nicht. ;)
Die remove-Methode soll ein Car-Objekt übergeben bekommen, und dann mit der equals-Methode von Car dieses Objekt in der Liste suchen. Und das möchtest du dann entfernen.


Quoted

Original von Joachim
[...]void iteratorReset() setzt current = start; boolean iteratorHasNext() liefert true zurück, wenn der aktuelle Knoten (also der, auf den der Zeiger "current" zeigt) einen Nachfolger hat); Car iteratorGetCurrent() liefert den Inhalt des aktuellen Knotens zurück; void iteratorStep() setzt das aktuelle Element einen Schritt weiter.

In der Aufgabenstellung sind solche Methoden sogar vorgegeben. Ich finde die allerdings etwas missverständlich formuliert, bei "next" steht z.B. nur

Quoted

• … next – liefert das nachfolgende Listenelement

Und eine reset()-Methode ist nicht vorgesehen.