2017-10-18 12 views
-1

リンクリストの挿入メソッドを書いていて、わかりにくいものが1つ見つかりました。リンクされたリストを経由してJavaで移動する

class Node { 
int data; 
Node next; 
Node(int d) { 
     data = d; 
     next = null; 
    } 
} 

public static Node insert(Node head,int data) { 
    Node conductor = head; 
    if(conductor == null){ 
     head = new Node(data); 
    } 
    else{ 
     while(conductor.next != null){ 
      conductor = conductor.next; 
     } 
     conductor.next = new Node(data); 
    } 
    return head; 
} 

が、私はwhileループを変更する場合:このコードを使用して通過するとき、それは動作します

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

それは動作しません。そして私はその違いが何であるか分かりません。 誰も助けてもらえますか?

+1

に新しいノードを追加する必要があり、 'while'後、' conductor'が最後です要素をリストに追加します。第二に、「指揮者」は「ヌル」であり、リストの一部ではない。 –

+2

私はこれをまっすぐにしましょう:コードを何か別のものに変更したのですが、なぜ違うのでしょうか?なぜあなたは短いリストの例を取っ​​て、それが何をしているのか敗者に取り組まないのですか? –

+0

私は見る!私はnullを誤解しました。私は最後のノードが指し示すヌルが参照を持っていると思ったので、指数がそのヌルを指している限り、それはリストの一部になります。今私はnullがnullであることを知っている、それは参照を保持していません。ありがとうございました! –

答えて

0

最初ループconductorを停止リスト内の最後のノードを参照する、すなわち、それはnextヌルであるものであることを保持しています。変更したいノードです。これはconductor.next = new Node(data)で行うことができます。 conductorはほぼ確実にあなたが望んでいないものを完全に無用であるとnullときループで

それが停止します。

+0

ありがとうございました! –

0

問題は、あなたがnullを打つまでは、要素を反復場合は、リストの残りの部分に何connnectionもありません新しいNodeするconductorを設定することです:あなたが欲しい

[node0] -> [node1] -> `null` ... [node2] -> null 
            ^^^-- your inserted element 

が最後にの要素を見つけ、最後の要素のnextとして新しいNodeを付け加えます。このため、リンクリストと呼ばれています。ときあなたはinsert次回への最後の要素からリンク作成:

[node0] -> [node1] -> [node2] -> null 
         ^^^-- your inserted element 
+0

それは非常に明確です!どうもありがとうございました。 –

-1

をあなたのローカル変数Node conductorは、オブジェクトではなく、オブジェクト自体、どちらのコピーへの参照であることを理解しなければなりませんそれの。

ループの末尾にあるので、conductor = new Node(data);はこのリファレンスをポイントの新しいオブジェクトに変更します。リスト自体は変更されません。

+0

うん、私はそれを手に入れる。どうもありがとうございました。 –

0

は、リンクリスト

の1-> 2 - > 3 - > 5>ヌル

はそれがでNULLポインタに到達し、新しいノードを作成しますが、いないときは、停止を書かれているループとしましょう"5"と作成している新しいノードとの間のリンクを壊す現在の次のものがあるため、リンクされたリストに新しいノードが追加されることはありません。

ので、我々は、我々は現在、次がnull見つけたときにループを停止する必要があり、我々は最初のもので、現在の次の位置

関連する問題