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 not a stack overflow instead?
-
2Can we see the length() method?Armand– Armand2010年11月22日 11:30:38 +00:00Commented Nov 22, 2010 at 11:30
3 Answers 3
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...
1 Comment
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.
1 Comment
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.