【链表】移除链表元素

题目:

删除链表中等于给定值 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 };

 

posted @ 2020-05-01 17:21  梦醒潇湘  阅读(122)  评论(0)    收藏  举报