原题
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
题目分析
删除等于某个值的所有节点,返回删除后的单链表。
设立一个临时指针tmp指向链表头,假定头不等于要删除的节点,判断下一个节点是否等于,如果等于将tmp指向删除节点的下一个节点,。。。
代码实现
public ListNode RemoveElements(ListNode head, int val)
{
if (head == null)
return null;
//检测头是否等于val
if (head.val == val)
head = head.next;
ListNode tmp = head;
while (tmp != null && tmp.next != null)
{
if (tmp.next.val == val)
{
deleteNode(tmp,tmp.next);
}
else
tmp = tmp.next;
}
//检测头是否等于val
if (head!=null && head.val == val)
head = head.next;
return head;
}
//删除节点node,pre为node的前驱
private void deleteNode(ListNode pre, ListNode node)
{
ListNode tmp = node.next;
pre.next = tmp;
}