class Solution3 {
public ListNode removeElements(ListNode head, int val) {
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
ListNode prev = dummyHead;
while(prev.next != null){
if(prev.next.val == val)
prev.next = prev.next.next;
else
prev = prev.next;
}
return dummyHead.next;
}
}
老师你好:
请教一下这里的引用怎么理解?首先创建了dummyHead 这个引用指向了虚拟头节点。ListNode prev = dummyHead;这个代码我理解的意思是将引用prev和引用dummyHead都指向了虚拟头节点。之后遍历链表的时候使用的是引用prev。prev = prev.next;这个代码将引用prev给覆盖了,这时候引用prev和引用dummyHead所指向的对象应该是不同的。为什么最后的返回时dummyHead.next,而在程序中操作的却是引用prev?