2010-11-22 62 views
0

我有個問題。給我一個帶有val和Node參數的鏈接列表節點。我還給了一個函數調用join,它將把列表x的末尾加入到y中。關於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 2010-11-22 11:30:38

回答

1

怎麼不是堆棧溢出 取而代之?

因爲該列表在join()的呼叫終止之前仍然結束。如果你把它再次,但是......

+0

嗨,感謝您的回覆。我再次檢查,結果溢出。 – shh 2010-11-22 11:45:02

1

join函數看起來不錯,但如果你this.join(x,x)調用它,你建立某種圈子的!

所以如果你在this.join(x,x)之後用x做一些遞歸的事情,你可能會因爲無休止的重新獲得某種堆棧溢出。

+0

嗨!感謝您的回覆,它確實變成了溢出。 – shh 2010-11-22 11:45:54

1

由於節點x只有一個實例,並且您在列表中建立了圓。你永遠不會達到x.next == null。你應該檢查一下是否平等。

+0

嗨,謝謝。你說得對!這是我的代碼是問題所在。 – shh 2010-11-22 11:45:25