verkettete listen

  • Themenstarter Themenstarter ik
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
I

ik

Gast
verstehe einfach das prinzip von verketteten listen nicht, bitte möglichst detailliert und für ganz dumme erklären

Code:
public class Test {
	public static void main (String[] args) {
		
	Node head, n;

	head = new Node (1,null);
	n = new Node (2,head); head=n;
	n = new Node (3,head); head=n;

	n=head;
	

	while (n!=null) {
		System.out.println ("Element= "+n.getElement());
		n=n.getNext();
}
}
}

Wieso braucht man nur head und n als "node" obwohl man 3 elemente hat?
Was genau passiert wenn head = n? was ist head? ist das nicht der knoten der das element "1" enthält?
wird der nicht bei head=n überschrieben?

ich blicke da echt nicht durch und wäre sehr dankbar für Hilfe!


ik
 
du hast zwar jetzt nicht die Node Klasse gepostet, aber der source wie er da steht macht so keinen sinn, das hast du richtig erkannt
 
aber es funktioniert....hier die node klasse

Code:
public class Node {
	int element;
	Node next;

	Node (int d, Node n) {
		element=d; next=n;
	}	
	
	void setElement (int d) { element=d; }
	int getElement()	{ return element; }
	
	void setNext (Node n)	{ next=n; }
	Node getNext()		{ return next; }
}
[/quote]
 
des is ne einfach verkettete liste, wo ein element sein nächstes kennt, so wie wenn jemand am tisch seinen rechten nachbarn kennt 😉
 
Das ist da aber schon irgendwie komisch aufgeschrieben - da wird wild-wüst rum-zugewiesen, so dass man am Ende selbst nicht mehr weiss, was so drin steht.

Wieso braucht man nur head und n als "node" obwohl man 3 elemente hat?
Die drei Elemente werden nacheinander in die Liste reingehängt - wie Eisenbahn-Waggons, die man einen Zug hängt.

Was genau passiert wenn head = n? was ist head? ist das nicht der knoten der das element "1" enthält?
Könnte man meinen, aber da werden einige seltsame Zuweisungen gemacht - bei sowas
...
n = new Node (3,head); head=n;
n=head;
... kann man eigentlich nur den Kopf schütteln...

wird der nicht bei head=n überschrieben?
Ja. Die Liste wird sozusagen "rückwärts" aufgebaut. Wenn mit
node = new Node("x", otherNode);
ein Knoten erstellt wird, dann ist "otherNode" der Nachfolger des neu erstellten Knotens.

Man hätte die Erstellung der Liste auch so schreiben können:
Code:
Node third = new Node (1,null);
Node second = new Node (2,third);
Node first = new Node (3,second);
Node head = first;
Aber das ist eben keine besonders "elegante" Darstellung.
 
Danke für die erklärung....

was ist denn nun die elegante lösung?

Bedeutet der Ausdruck head = newNode, dass head auf newNode zeigt, also newNode der neue 1. knoten ist?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben