题目链接: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

这道题的要求是在链表中删除指定元素的节点。

同样是建立个空头,便于操作。然后遍历链表,遇到要删除的节点,删除即可。

时间复杂度:O(n)

空间复杂度:O(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution
{
public:
    ListNode* removeElements(ListNode *head, int val)
    {
        ListNode *h = new ListNode(0), *p = h;
        h -> next = head;
        
        while(p -> next != NULL)
        {
            if(p -> next -> val == val)
                p -> next = p -> next -> next;
            else
                p = p -> next;
        }
        
        return h -> next;
    }
};