关于Java方法的问题

时间:2010-11-22 11:20:30

标签: java

我有一个问题。我得到一个链接列表节点,其参数为A val,Node为next。我还给了一个函数调用join,它将列表x的结尾加到y。

  

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.我可以怎么来不是堆栈溢出呢?

3 个答案:

答案 0 :(得分:1)

  

怎么没有堆栈溢出   代替?

因为在join()的调用终止之前,列表仍然有结束。如果你再次呼叫 ,那么......

答案 1 :(得分:1)

联接功能看起来不错,但如果您使用this.join(x,x)调用它,则会构建某种圆

因此,如果您在x之后使用this.join(x,x)进行递归操作,则可能会因为无休止的重复而获得某种堆栈溢出。

答案 2 :(得分:1)

因为节点x只有一个实例,所以您在列表中构建了一个圆圈。你永远不会达到x.next == null。你可能应该检查一些平等。