Discription:
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
Solution:
ListNode* removeElements(ListNode* head, int val) {
ListNode *prehead = new ListNode(-1);
prehead->next = head;
head = prehead;
while (head->next){
if (head->next->val == val){
ListNode *temp = head->next;
head->next = head->next->next;
delete temp;
}
else
head = head->next;
}
return prehead->next;
}
else:
ListNode* removeElements(ListNode* head, int val) {
ListNode *fakeHead = new ListNode(-1);
fakeHead->next = head;
ListNode *curr = head, *prev = fakeHead;
while (curr) {
if (curr->val == val) {
prev->next = curr->next;
}
else {
prev = prev->next;
}
curr = curr->next;
}
return fakeHead->next;
}
ListNode *removeElements(ListNode *head, int val)
{
ListNode **list = &head;
while (*list != NULL)
{
if ((*list)->val == val)
{
*list = (*list)->next;
}
else
{
list = &(*list)->next;
}
}
return head;
}
GitHub-LeetCode:
https://github.com/wenwu313/LeetCode