I got a question. I am given a linked-list Node with the parameter of A val and Node next. I also given a function call join which will join the end of list x to to y.
5 |-> 6 |-> 7 |-> null
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);
}
}
and when I get the length is only 3. Can I how come is 开发者_StackOverflow社区not a stack overflow instead?
how come is not a stack overflow instead?
Because the list still has an end before the call to join()
terminates. If you call it again, however...
The join function looks good, but if you invoke it with this.join(x,x)
you build some kind of circle!
So if you do something recursive with x
after this.join(x,x)
, you will possible get some kind of stack overflow because of an endless recusrion.
Because there is only one instance of node x, and you build up circle in your list. You will never reach x.next==null. You should probably check for some equality.
精彩评论