我有这段代码,可以删除给定值的链表元素。我试图弄清楚为什么需要初始化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 虚拟 = new ListNode(0); 应该 ListNode 虚拟 = new ListNode(-1);