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