2016-11-30 14 views
0

リンクリストをjavaで実装しようとしていますが、何も表示されません。私はそれをデバッグしようとし、それはAdd関数が呼び出されるたびに、以前の値が上書きされるように思えます。しかし、私はそれのロジックをチェックすると、それは動作するはずです。Javaでリンクリストを実装する

public class MyLinkedList { 

public Node head; 
public Node curr; 

public MyLinkedList() { 
    // TODO Auto-generated constructor stub 
    head = null; 
    curr = null; 
} 

public void Add(int data) { 
    Node box = new Node(); 
    box.data = data; 
    box.next = null; 
    curr = head; 
    if (curr == null) { 
     head = box; 
     curr = null; 
    } 

    else { 
     while (curr.next != null) { 
      curr = curr.next; 

     } 
     curr.next = box; 
    } 
} 

public void Print() { 
    curr = head; 
    while (curr != null) { 
     System.out.println(curr.data); 
     curr = curr.next; 
    } 
} 
} 

これは、Nodeクラスは、あなたのコードは大丈夫です

public class Node { 
    public int data; 
    public Node next; 
} 
+1

どこ 'Print'メソッドを実行するコードはありますか? – ItamarG3

+1

完全な例を表示します。どのように使用し、addとprintを呼び出すか。 – weston

+0

一つの注意点は、 'public Node curr;'はすべての場合にローカル変数でなければならないということです。 – weston

答えて

0

を持っているものです。 * .classファイルを削除してください。コードの初期段階でスタックされている可能性があります。 * .classファイルは出力フォルダの下にあります(使用したIDEに応じてフォルダの名前は変更できますが、通常はビルドフォルダの下にあります)。そのフォルダを完全に削除する必要があります。

0

それはすでに動作しますが、私はあなたのためにそれを片付けるます:

public class MyLinkedList { 

    private Node head; //never expose a field as public 

    //the whole constructor was unnecessary 

    public void add(int data) { //methods start with a lower case 
     add(new Node(data)); //nodes always need data, so I'm passing in constructor 
    } 

    // this method adds an existing node rather than the previous add both 
    // creating, finding the end and adding 
    private void add(Node node) { 
     if (head == null) { 
      head = node; 
     } else { 
      lastNode().next = node; 
     } 
    } 

    private Node lastNode() { //finds the last node in the chain 
     Node curr = head; //curr is local 
     while (curr.next != null) { 
      curr = curr.next; 
     } 
     return curr; 
    } 

    public void print() { //methods start with a lower case 
     Node curr = head; //curr is local 
     while (curr != null) { 
      System.out.println(curr.data); 
      curr = curr.next; 
     } 
    } 

    private static class Node { //this class is just useful internally to MyLinkedList 
     private final int data; //final - node data doesn't change 
     private Node next; 

     private Node(int data) { 
      this.data = data; 
     } 
    } 
} 
+0

これはあなたへの助けでしたか? upvoteまたは有益な提案を受け入れてください。 – weston

関連する問題