题目:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
思路:
分2种情况:
1)如果头结点的val值等于所给的val值,应该删除头结点;

2)如果找到的节点为val的值不是头结点,则又是另外一种情况:

这两种情况分情况的话比较复杂,因此可以给链表设置一个哨兵节点,指向头结点,这样统统可以用第二种方法来解决该问题。
参考代码:
public ListNode removeElements(ListNode head, int val) {
if(head==null)return null;
//创建哨兵节点
ListNode h = new ListNode(0);
h.next = head;
ListNode p = h;
while(p.next != null){
if(p.next.val == val){
p.next = p.next.next;
}else{
p = p.next;
}
}
//删除哨兵
p = h.next;
return p;
}
560

被折叠的 条评论
为什么被折叠?



