虚拟(哑)节点(dummy node)
在链表的操作中,添加一个哑节点(dummy)
,让它的指针指向链表的头节点。
ListNode dummy = new ListNode(val, head);
return dummy.next;
好处:
省略头节点为空时的情况的判断
;头节点和其他节点进行同样的操作时,由于头节点没有前一个节点,需要对这种情况进行单独判断,但加入虚拟节点以后,头节点就可以当作普通节点看待
。
eg1:leetcode–203.移除链表的元素
203.移除链表的元素
示例2属于头节点为空的情况;示例3属于要删除头节点的情况。如果不加入虚拟节点,这两种情况都需要单独考虑,加入虚拟节点就不一样了。
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode du