2016-06-29 6 views
-4

これが唯一の "0" を出力し、私はそれが "01"ListNodeをnullに設定し、それをポイントして定義できないのはなぜですか?

ListNode fakehead = new ListNode(0); 
    ListNode node = null; 
    fakehead.next = node; 
    node = new ListNode(1); 

をプリントアウトしたいしかし、これは "012"

ListNode fakehead = new ListNode(0); 
    ListNode node = new ListNode(1); 
    fakehead.next = node; 
    node.next = new ListNode(2); 

を出力Iがnullノード=を設定することはできませんなぜとそれを初期化して "01"を印刷しますか?

これを行うための正しい規約/コードは何ですか? 私はfakehead.nextに新しいノードを作成したいと思いますか?

+2

'node'を' null'と同じに設定すると 'node'が指す参照を捨てるようになります。' node'を新しい 'node'と同じに設定すると、 'node'は以前に指していました。あなたは 'LinkedLists'と他のデータ構造をカバーする本を読んだり、コースを取るべきです。 –

+0

質問をする前に、自分で答えを探す努力をするべきです。努力が欠けていることは明らかです。 –

+0

[クラス、リファレンス、およびオブジェクトとは何か]の複製がありますか?(http://stackoverflow.com/questions/9224517/what-is-a-class-reference-and-an-object) –

答えて

1

最初にnodeをnullに設定してfakehead.next = nodeとし、fakehead.nextがnullを指しているときコンパイラがこの文を実行するときにnodeにスペースが割り当てられていないため "node = new ListNode(1); node.butに新しいメモリを割り当てます。なぜなら、初期化の前にfakeheadがそれを指し示しているからです。fakehead.nextはnullを指しています。

2番目のケースでは、ノードの初期化と配置の後にfakehead.next = nodeが実行されるため、この場合正しく動作します。

関連する問題