leetcode-203. 移除链表元素
链表的种种性质操作早已熟记于心,但是上手写代码的时候还是有种种困难。
话不多说,直接上代码: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* dummyHead = new ListNode(0,head); //创建虚拟头结点,后面操作可以统一
ListNode* cur = dummyHead; //创建用来遍历的节点,cur=current
while (cur->next != NULL)
{
if(cur->next->val == val)
{
ListNode* temp = cur->next;
cur->next = cur->next->next; //删除操作,反而是最简单的一步
delete temp; //C++一定要释放空间
}
else
{
cur = cur->next; //不是要删除的节点,就跳过
}
}
head = dummyHead->next;
delete dummyHead;//释放空间
return head;
}
};