2016-11-27 7 views
1

単独リンクされたリスト。java linked list。このプログラムでは印刷されません8.Why?

  1. 私はノード
  2. を作成するには、新しいノードに

実装追加:

//create node 
class Node { 
    int data; 
    Node next; 

    Node(int data) { 
    this.data = data; 
    next = null; 
    } 
} 
public class LinkedList { 

    //Add new node 
    public static void add(Node root, int data){ 
    Node temp; 
    while (root != null) { 
     root = root.next; 
    } 
    temp = new Node(data); 
    root = temp; 
    } 
    //print node 
    public static void print(Node root){ 
    while (root != null) { 
     System.out.println(root.data); 
     root = root.next; 
    } 
    } 

    public static void main(String[] args) { 
    Node root ; 
    Node iter; 
    root = new Node(7); 
    iter = root; 
    add(iter, 8); 
    print(iter); 
    } 

} 

を私はデータ構造を働きます。私はリストをリンクしたいが、プログラムは失敗している。このプログラムは印刷されません8.Why?

私は間違いをどこでしますか?

答えて

2
while(root!=null){ 
    root=root.next; 
} 
temp=new Node(data); 
root=temp; 

ここで:rootは一度にNULLです。 ループの後、チェーンの最後の要素に次の要素を割り当てません。 rootNULLの値を指し、チェーンの要素を参照していないため、チェーン内で何も実行しません。
また、メソッドが終了するときに考慮されていないため、メソッドパラメータに値を割り当てるのは意味がありません。

ノード・チェーンの最後にノードを追加したい場合は、次の方法でコードを置き換える必要があります:あなたはもっと意味のある名前を書くことができ

while(root.next !=null){ 
    root=root.next; 
} 
temp=new Node(data); 
root.next=temp; 

:とにかく

Node lastElement = root; 
while(lastElement.next !=null){ 
    lastElement=lastElement.next; 
} 
temp=new Node(data); 
lastElement.next=temp; 

、より簡単な解決策は、チェーンの最後のノードを格納するフィールドをクラスに持たせることです。最後に要素を追加するためにすべての要素を反復処理することはあまり効率的ではありません。

+0

ありがとうございます。働いた:) – myvalley

+0

グレート:)私の答えがあなたの問題に対処している場合、あなたは受け入れられたとして答えをマークする必要があります。 – davidxxx

関連する問題