Java LinkedList

Diskutiere Java LinkedList im Java Basics - Anfänger-Themen Bereich.
G

Gansa

Hallo, ich schreibe gerade eine doppelt verkettete LinkedList mit ihren einzelnen Methoden. Ich möchte gerade eine Methode insert(int Index, O Object) schreiben, welches mir einen neuen knoten erstellt und den altern dann verschiebt. Die Methode habe ich so geschrieben:

Java:
    public void insert(int index, Object o) {

        Node currentNode = head;

        for (int i = 0; i < index; i++) {
            currentNode = currentNode.getNextNode();
        }

        Node old = currentNode;
        currentNode = new Node(o);

        currentNode.setPreviousNode(old.getPreviousNode());
        currentNode.setNextNode(old);
    }
in der main rufe ich es so auf:

Java:
 list.insert(3, "Eva");

An sich sollte die Methode (laut meiner logik) funktionieren. Aber es fügt den neuen Knoten einfach nicht hinzu. Die Ausgabe ist unverändert von meiner insert Methode. Habe ich etwa die Methode doch falsch implementiert? Danke schon mal für die Fehlerhinweise!
 
T

TM69

Fehlt da nicht etwas? z.B. die Instanzierung? 😁 Außerdem langt ein einfaches
Code:
linkedList.add(3, "myObject");
und die Verknüpfung ist falsch.
 
Zuletzt bearbeitet:
J

JustNobody

Du setzt die Referenzen im neuen currentNode, aber die Referenzen der anderen Nodes sind noch die alten und verweisen nicht auf den neuen Node.

Du hast due Nodes A und B die zusammen hängen:
A <-> B
Wenn dazwischen ein Node C soll, dann muss nicht nur C auf A und B verweisen sonder A muss statt auf B auf C verweisen und B statt auf A auf C.
 
G

Gansa

Du setzt die Referenzen im neuen currentNode, aber die Referenzen der anderen Nodes sind noch die alten und verweisen nicht auf den neuen Node.

Du hast due Nodes A und B die zusammen hängen:
A <-> B
Wenn dazwischen ein Node C soll, dann muss nicht nur C auf A und B verweisen sonder A muss statt auf B auf C verweisen und B statt auf A auf C.
hat jetzt funktioniert Danke sehr!!
 
G

Gansa

Also die Methode hat jetzt funktioniert, habe die Referenzen richtig gesetzt. Nur ist mir aufgefallen, das ich den head vergessen habe, das wenn ich den Index 0 haben das der neue Knoten head sein soll

so hab Ichs gemacht und bekomme ein nullPointerExecption

Java:
    public void insert(int index, Object o) {

     Node currentNode = head;
        Node newNode = new Node(o);


        for (int i = 0; i < index; i++) {
            currentNode = currentNode.getNextNode();
        }

        if (currentNode == head){
            head = newNode;
        } else {

        Node old = currentNode;

        newNode.setPreviousNode(old.getPreviousNode());
        old.getPreviousNode().setNextNode(newNode);
        old.setPreviousNode(newNode);
        newNode.setNextNode(old);
    }
    }
 
J

JustNobody

Du musst natürlich immer prüfen, dass es ein Element auch gibt.

Beim Einfügen am Anfang machst du es nicht und gehst davon aus, das es das Element nicht gibt ...

Beim Einfügen am Ende prüfst du nicht und daher kommt die NPE.

Mal dir die Fälle doch alle einmal auf und überlege genau, was du wann machen musst.
 
Thema: 

Java LinkedList

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben