删除链表中等于给定值 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;
}
};