1、算法描述
给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
2、算法分析
在链表开始定义一个空的结点,数据域可以任意。
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
这样就省去了第一个结点等于val的判断。
注意:注意链表的数据结构
Definition for singly-linked list. public class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } }
3、代码实现
class Solution{
public ListNode removesElement(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;
}
}