2010-11-22 12 views
0

質問がありました。 AvalとNodeのパラメータを持つリンクリストノードが与えられました。私はリストxの最後をyに結合する関数呼び出しjoinも与えました。Javaメソッドに関する質問

5 | - > 6 | - > 7 | - >ヌル

Node x = new Node(5, new Node(6, new Node(7, null))); 
this.join(x, x) 

    public void join(Node x, Node y){ 
    if(x.next==null){ 
     x.next = y; 
    }else{ 
    join(x.next, y); 
    } 
} 

と私は長さが唯一の3で取得するとき、私はどのように来ることができます代わりに、スタックオーバーフローではありません?

+2

length()メソッドを見ることはできますか? – Armand

答えて

1

どうしてスタックオーバフローではないのですか? ?

join()へのコールが終了する前に、リストにはまだ終了があります。あなたは再びそれを呼び出すと、しかし...

+0

こんにちは返信いただきありがとうございます。私はもう一度チェックし、オーバーフローすることになります。 – shh

1

参加する機能がよさそうだが、あなたは、円のいくつかの種類を構築this.join(x,x)でそれを呼び出す場合は!

this.join(x,x)の後にxで再帰的な処理を行うと、無限のリコレーションのために何らかのスタックオーバーフローが発生する可能性があります。

+0

こんにちは!あなたの返信をありがとう、それは実際にオーバーフローになります。 – shh

1

ノードxのインスタンスが1つのみで、リストにサークルを構築するためです。 x.next == nullには決して到達しません。あなたはおそらくいくつかの平等をチェックするべきです。

+0

こんにちは。ありがとうございます!それは問題だった私のコードだった。 – shh