Hier handelt es sich um eine einfach verkettete Liste. Wo man verschiedene Methoden ausfuehren kann.
l.insert(new Node(1)); Methode insert aus Class List wird benutzt. Node n wird erwartet Parameter eins wird uebergeben.
Aber Klasse Node hat zwei Konstruktoren. Dann wird der Erste genommen. Wegen dem Node n. Aber woher wird dann das next = n im Konstruktor geliefert?
Aus den Variablen ganz oben in Klasse Node? Jedenfalls wird doch bei l.insert(new Node(1)); nur das element = 1 uebergeben?
l.insert(new Node(1)); Methode insert aus Class List wird benutzt. Node n wird erwartet Parameter eins wird uebergeben.
Aber Klasse Node hat zwei Konstruktoren. Dann wird der Erste genommen. Wegen dem Node n. Aber woher wird dann das next = n im Konstruktor geliefert?
Aus den Variablen ganz oben in Klasse Node? Jedenfalls wird doch bei l.insert(new Node(1)); nur das element = 1 uebergeben?
Java:
// l.insert(new Node(1)); Methode insert aus Class List wird benutzt. Node n wird erwartet
// Parameter eins wird uebergeben.
// Aber Klasse Node hat zwei Konstruktoren. Dann wird der Erste genommen. Wegen dem Node n. Aber woher wird dann das next = n im Konstruktor geliefert?
// Aus den Variablen ganz oben in Klasse Node? Jedenfalls wird doch bei l.insert(new Node(1)); nur das element = 1 uebergeben?
public class TestList {
public static void main(String args[]) {
List l;
// neue Liste
l = new List();
// alloziere Knoten
// ! Hier ist der Punkt den ich nicht verstehe
l.insert(new Node(1));
l.insert(new Node(4));
l.insert(new Node(5));
l.insert(new Node(2));
l.dump();
l.delete(5);
l.dump();
}
}
public class Node {
public int element = 0;
public Node next = null;
// Konstruktor 1
public Node(int e, Node n) {
element = e;
next = n;
}
// Konstruktor 2
public Node(int e) {
element = e;
}
}
public class List {
public Node head;
// am Kopf einfuegen Methode insert
public void insert(Node n) {
n.next = head;
head = n;
}
public void delete(int key) {
Node current = head;
if (head.element == key) {
head = head.next;
return ;
}
while (current.next!=null) {
if (current.next.element==key)
current.next = current.next.next;
current = current.next;
}
}
public Node search(int key) {
Node current = head;
while (current!=null) {
if (current.element==key)
return current;
current = current.next;
}
return current;
}
public void dump() {
Node current = head;
System.out.println("dumping list");
while (current!=null) {
System.out.println(" element: "+current.element);
current = current.next;
}
}
}