Fügen Sie Knoten, um das Ende der Verlinkten Liste
Mit ein wenig Mühe hinzufügen, einen Knoten an das Ende meiner verlinkten Liste. Es scheint nur die Anzeige das Letzte fügte ich hinzu, bevor ich meine addFirst Methode. Für mich sieht es aus wie auf dem addLast-Methode versuche ich, zunächst den Knoten ordnen Sie es mit 5, dann für die folgenden zahlen mit einer while-Schleife weisen Sie Sie den letzten Knoten auf der verlinkten Liste. Wenig stecken, warum ich nicht an meine Ausgabe auf display 5 und 6.
class LinkedList
{
private class Node
{
private Node link;
private int x;
}
//----------------------------------
private Node first = null;
//----------------------------------
public void addFirst(int d)
{
Node newNode = new Node();
newNode.x = d;
newNode.link = first;
first = newNode;
}
//----------------------------------
public void addLast(int d)
{
first = new Node();
if (first == null)
{
first = first.link;
}
Node newLast = new Node();
while (first.link != null)
{
first = first.link;
}
newLast.x = d;
first.link = newLast;
first = newLast;
}
//----------------------------------
public void traverse()
{
Node p = first;
while (p != null)
{
System.out.println(p.x);
p = p.link;
}
}
}
//==============================================
class test123
{
public static void main(String[] args)
{
LinkedList list = new LinkedList();
list.addLast(5);
list.addLast(6);
list.addLast(7);
list.addFirst(1);
list.addFirst(2);
list.addFirst(3);
System.out.println("Numbers on list");
list.traverse();
}
}
Habe ich auch versucht, erstellen einen letzten Knoten und in die traverse-Methode mit einer separaten Schleife zum Durchlaufen des letzten Knoten. Ich am Ende mit dem gleichen Ausgang!
public void addLast(int d)
{
Node newLast = new Node();
while (last.link != null)
{
last = newLast.link;
}
newLast.x = d;
newLast.link = last;
last = newLast;
}
- 1) Wo ist der "Letzte" definiert? 2) addLast davon ausgegangen, dass Sie eine definierte Liste. Wenn Ihr Problem ist es funktioniert nicht auf den ersten, die einfachste Lösung wäre addLast nennen addFirst wenn die Liste leer ist.
- Das zweite Stück code, das ich gepostet, wo unter I definierten ersten ursprünglich auf null ich hatte
private Node first = null;
rechts unterhalb. Ich habe versucht in beide Richtungen und nicht, dass in den ersten Weg, ich versuchte es.
InformationsquelleAutor user3413540 | 2014-04-28
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Logik Ihrer addLast-Methode falsch war. Ihre Methode war die Neuzuweisung
first
mit jedem Aufruf der Logik auseinander fällt von diesem Punkt an. Diese Methode erstellt den Knoten fürlast
und wenn die Liste leer ist, weisen Sie einfachfirst
auf den neuen Knotenlast
. Wennfirst
ist nicht null, es wird Durchlaufen der Liste, bis Sie Sie findet ein Knoten mit einem null-link und stellen Sie die Zuordnung für das Knoten-link.Ihre addLast () - Methode zeigt den Wert des letzten Knotens, weil jedes mal, wenn Sie fügen Sie einen Knoten an das Ende Ihrer Liste, Sie sind überschrieben mit dem Hinweis auf "erste". Sie tun dies, wenn Sie zuweisen eine neue Referenz zu den ersten in der folgenden Zeile:
Versuchen Sie Folgendes:
Die Methode erzeugt einen neuen Knoten, und es wird Hinzugefügt, um das Ende der Liste nach der überprüfung zwei Bedingungen:
1.) Wenn der erste null ist: in diesem Fall ist die Liste leer ist und der erste Knoten sein sollte
initialisiert der neue Knoten, den Sie erstellen, dann wird es wieder (oder Sie tun können
eine if-else).
2.) Wenn der erste nicht null: Wenn die Liste nicht leer ist, werden Sie Schleife durch die Liste, bis Sie
am Ende mit einem Verweis auf den letzten Knoten, nach dem Sie seine nächsten Knoten auf der
eine, die Sie gerade erstellt haben.
Wenn Sie wollten, zu halten Spur von dem Schwanz der Ihre Liste "Letzte", wie Sie oben erwähnt ist, dann hinzufügen:
am Ende der Methode. Hoffe, das hilft!