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
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
while head:
if head.val == val:
head = head.next
else:
break
if not head:
return head
p, q = head, head.next
while(q):
if q.val == val:
q = q.next
p.next = q
else:
p, q = q, q.next
return head
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
/* ListNode *p = head, *q;
while (head){
if (head->val == val){
head = head->next;
delete p;
p = head;
}
else
break;
}
if (!head)
return head;
while (p->next != NULL){
q = p->next;
if (q->val == val){
p->next = q->next;
delete q;
q = p->next;
}
else{
p = q;
q = q->next;
}
}
return head; */
ListNode **p = &head;
while (*p != nullptr){
if ((*p)->val == val)
*p = (*p)->next;
else
p = &(*p)->next;
}
return head;
}
};