【链表】移除链表元素
题目:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
解答:
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* removeElements(ListNode* head, int val) 12 { 13 ListNode* pre = new ListNode(0); 14 pre->next = head; 15 16 ListNode *prev = pre; 17 ListNode *curr = head; 18 ListNode *toDelete = NULL; 19 20 while (curr != NULL) 21 { 22 if (curr->val == val) 23 { 24 prev->next = curr->next; 25 toDelete = curr; 26 } 27 else 28 { 29 prev = curr; 30 } 31 32 curr = curr->next; 33 34 if (toDelete != NULL) 35 { 36 delete toDelete; 37 toDelete = nullptr; 38 } 39 } 40 41 ListNode *ret = pre->next; 42 delete pre; 43 return ret; 44 } 45 };