LeetCode: 203. Remove Linked List Elements

题目描述

Remove all elements from a linked list of integers that have value val.

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

解题思路

判断当前节点的下一个节点是否是 ​​val​​, 如果是的话,则删除掉下一个节点。

AC 代码

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {

// 首节点是否是 val
while(head && head->val == val) head = head->next;
if(head == nullptr) return nullptr;

// 下一个节点是否是 val
ListNode* iterNode = head;
while(iterNode->next)
{
if(iterNode->next->val == val) iterNode->next = iterNode->next->next;
else iterNode = iterNode->next;
}

return head;
}
};