题目来源:
https://leetcode-cn.com/problems/remove-linked-list-elements/description/
题目描述:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
这题比较简单就不过多描述了,只需要注意一点就是如果要删除的结点是头结点的话要分出一种情况讨论。
代码如下:
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* p = head;
ListNode* previous;
while(p) {
if(p->val == val) {
//如果要删除的结点是头结点
if(p == head) {
head = p->next;
free(p);
p = head;
}
else {
previous->next = p->next;
free(p);
p = previous->next;
}
}
else {
previous = p;
p = p->next;
}
}
return head;
}
};