Verkettete Liste

H

Henry939

Aktives Mitglied
Hallo. Ich habe versucht, eine verkettete Liste zu programmieren. Leider funktioniert das Einfügen eines neuen Elements scheinbar nicht. Es wäre schön zu erfahren, woran das liegen könnte. Wenn ich die Anzahl der Elemente meiner Liste ausgebe, wird mir eine "0" angezeigt, obwohl ich in meinem Hauptprogramm drei Elemente an die Liste angefügt habe. Ich wäre sehr dankbar, wenn mir jemand zeigen kann, wo der Fehler liegt!

Code:
package linkedList;

public class Main {
   public static void main(String[] args) {
       LinkedList<String> linkedList = new LinkedList<>();
       linkedList.insert("Hallo");
       linkedList.insert("Test");
       linkedList.insert("Wie gehts?");
       System.out.println(linkedList.getNumberOfElements());
   }
}

Code:
package linkedList;

public class LinkedList<T> {
   private Node<T> startNode;
   
   public LinkedList() {
       startNode = null;
   }
   
   private Node<T> getNullNode() {
       Node<T> currentNode = this.startNode;
       while (currentNode != null) {
           currentNode = currentNode.getNextNode();
           System.out.print("Durchlauf ");
       }
       return currentNode;
   }
   
   public void insert(T object) {
       Node<T> nullNode = getNullNode();
       System.out.println(getNullNode());
       nullNode = new Node<T>();
       nullNode.setObject(object);
   }
   
   public int getNumberOfElements() {
       int numberOfElements = 0;
       Node<T> currentNode = startNode;
       while (currentNode != null) {
           currentNode = currentNode.getNextNode();
           numberOfElements++;
       }
       return numberOfElements;
   }
}
Code:
package linkedList;

public class Node<T> {
   private T object;
   private Node<T> nextNode;
   
   public Node() {
       this.object = null;
       this.nextNode = null;
   }
   
   public T getObject() {
       return object;
   }
   
   public Node<T> getNextNode() {
       return nextNode;
   }
   
   public void setNextNode(Node<T> nextNode) {
       this.nextNode = nextNode;
   }
   
   public void setObject(T object) {
       this.object = object;
   }
}
 
mihe7

mihe7

Top Contributor
Du musst den Knoten verändert, der auf den "null node" zeigt.

Das hier:
Java:
private Node<T> getNullNode() {
       Node<T> currentNode = this.startNode;
       while (currentNode != null) {
           currentNode = currentNode.getNextNode();
           System.out.print("Durchlauf ");
       }
       return currentNode;
   }
ist äquivalent zu
Java:
private Node<T> getNullNode() { 
    return null;
}
 
H

Henry939

Aktives Mitglied
Genau genommen kriege ich ja nicht "null", sondern eine Referenz, die auf eine Speicherstelle zeigt. Nur zeigt diese Speicherstelle eben auf null. Oder ist null nicht als Wert, der von einer Referenz geliefert wird, sondern als Adresse (bzw. Referenz) an sich zu verstehen?

Ich dachte, die Funktion liefert mir folgendes:


<Adresse (----> null)>
oder kriege ich in Wirklichkeit sowas wie unten hier?
<leere Adresse>
 
H

Henry939

Aktives Mitglied
Ich verstehe. Dann ist "null" also eine Adresse (ins nichts), und nicht ein Wert.
 
H

httpdigest

Top Contributor
Kommt auf deine Definition von "Wert" an. Da Java ja bekanntlich für Argumente von Methodenparametern die Aufrufkonvention "Call-by-Value" besitzt, kann man schon sagen, dass eine Referenz auch ein Wert ist. Dass implementierungstechnisch dahinter eine Adresse steckt, bekommt man in Java tatsächlich niemals mit.
 
H

Henry939

Aktives Mitglied
Ein Wert ist in meinen Augen das eigentliche Datum. Die Adresse ist sozusagen die Angabe des Ortes, an dem man das Datum finden kann. Ich weiß, strengenommen ist eine Adresse auch ein Wert, aber das würde jetzt zu kompliziert werden.
 
mihe7

mihe7

Top Contributor
Mal als Beispiel:
Code:
void funktion(Integer a) {
    a = new Integer(55);
}

void caller() {
    Integer x = new Integer(1);
    funktion(x);
    System.out.println(x.toString());
}

Frage: was wird bei Aufruf von caller() ausgegeben?
(EDIT: Antwort: 1)
Warum? x ist eine Referenz auf ein Integer-Objekt. Die Referenz wird by-value übergeben, d. h. funktion wird mit einer Kopie dieser Referenz aufgerufen. Die Zuweisung in funktion() ändert also höchstens die Kopie, nicht aber die ursprüngliche Referenz.

Die null-Referenz referenziert, wie Du richtig gesagt hast, "Nichts". In C ist NULL z. B. einfach ein Zeiger auf etwas, das keinen Typ besitzt und an Adresse 0 liegt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 5
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
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
M verkettete Liste auslesen Java Basics - Anfänger-Themen 7
K eigene verkettete Liste Java Basics - Anfänger-Themen 4
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
A Eine verkettete Liste Java Basics - Anfänger-Themen 43
G verkettete lineare Liste Java Basics - Anfänger-Themen 2
L verkettete Liste - Ausgabeproblem Java Basics - Anfänger-Themen 2
G Wie kann ich eine verkettete Liste in ein JTable einfügen? Java Basics - Anfänger-Themen 7
D doppelt verkettete Liste Java Basics - Anfänger-Themen 16
S Doppelt Verkettete Liste Java Basics - Anfänger-Themen 7
R ArrayList Objekt -> verkettete Liste Java Basics - Anfänger-Themen 4
R verkettete Liste Java Basics - Anfänger-Themen 13
R verkettete Liste in und aus Datei Java Basics - Anfänger-Themen 5
M Doppelt verkettete Liste Zeiger Vorgänger beim Einfügen Java Basics - Anfänger-Themen 2
J doppelt verkettete Liste Java Basics - Anfänger-Themen 5
L doppelt verkettete Liste Java Basics - Anfänger-Themen 6
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 12
G Dopplelt verkettete liste Java Basics - Anfänger-Themen 4
B Doppelt verkettete Liste Java Basics - Anfänger-Themen 16
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4
R Datentyp Ring - zyklisch doppelt verkettete Liste - HILFE! Java Basics - Anfänger-Themen 12
E einfach verkettete liste, nullPointerException Java Basics - Anfänger-Themen 5
S Queue als verkettete Liste Java Basics - Anfänger-Themen 9
R doppelt verkettete Liste Java Basics - Anfänger-Themen 8
F doppelt verkettete liste! Java Basics - Anfänger-Themen 8
M Verkettete Liste (schritt für schritt durchlauf) Java Basics - Anfänger-Themen 5
R doppelt verkettete azyklische Liste Java Basics - Anfänger-Themen 2
Z Zyklisch verkettete Liste Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben