我有这段代码,用于删除给定值的链表元素。我试图弄清楚为什么有必要初始化ListNode p并将其设置为dummy并使用p节点来遍历和更新链表。为什么我不能直接使用虚拟节点来遍历和更新链表并返回头呢?
public class Solution {
public static ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = dummy;
while (p.next != null) {
if (p.next.val == val) {
p.next = p.next.next;
} else {
p = p.next;
}
}
return dummy.next;
}
任何帮助都是非常感激的!
ListNode dummy = new ListNode(0);
应该ListNode dummy = new ListNode(-1);