【LeetCode】203. Remove Linked List Elements
问题描述
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
问题分析
保留一个指针记录上一个节点,然后判断当前节点是不是需要去掉,若需要则将上一个节点的next指向这一个节点的next即可。
代码
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if(head==0) return head;
ListNode* p = head;
ListNode* q = 0;
while(p) {
if(p->val == val) {
if(p==head) {
head = p->next;
}
if(q!=0) {
q->next = p->next;
}
} else {
q=p;
}
p=p->next;
}
return head;
}
};