-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path203_Remove Linked List Elements.cpp
More file actions
44 lines (38 loc) · 1.1 KB
/
Copy path203_Remove Linked List Elements.cpp
File metadata and controls
44 lines (38 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
// 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 *dummy = new ListNode(0); dummy->next = head;
ListNode *iter = dummy, *tmp, *delPos;
while (iter->next != NULL) {
if (iter->next->val == val) {
// Don't need to move iter at last here.
tmp = iter->next->next;
delPos = iter->next; delete delPos;
iter->next = tmp;
}else {
iter = iter->next;
}
}
head = dummy->next;
delPos = dummy; delete delPos;
return head;
}
};
int main() {
ListNode* a = new ListNode(6);
ListNode* b = new ListNode(2);
ListNode* c = new ListNode(4);
ListNode* d = new ListNode(5);
ListNode* e = new ListNode(6);
a->next = b; b->next = c; c->next = d; d->next = e; e->next = NULL;
Solution s;
s.removeElements(a,6);
return 0;
}