代码如下:
public static int length(ListNode head) {
int len = 0;
while (head != null) {
len++;
head = head.next;
}
return len;
}
这个代码看起来是正确的,但实际上问题很大,因为函数内部改变了传入的参数的值,参数是reference type, 这样会导致参数的值的变化。因此要记住:无论何时,不能修改传入的参数,如果需要用到,则新建一个空间复制参数,再进行操作:
public static int length(ListNode head) {
ListNode cur = head;
int len = 0;
while (cur != null) {
len++;
cur = cur.next;
}
return len;
}