删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-linked-list-elements 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
就正常的遍历思路,不过需要在前面插一个头结点,方便删除链表的第一个节点。 所以判定条件是 ptr->next->val == val ,需要注意是ptr本身不会进行判定,所以在跳向下一个节点的时候需要小心……万一下一个节点也是应该删除的节点就错了= =
/** * 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) { ListNode node(0); node.next = head; ListNode* prehead = &node; ListNode* ptr = &node; while(ptr->next != nullptr){ int n = ptr->next->val; if(n == val){ ptr->next = ptr->next->next; }else{ ptr = ptr->next; } } return prehead->next; } };