203.移除链表元素

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* x = new ListNode(-1);
        x->next = head;//构建一个哨兵结点指向链表头
        ListNode* temp = x;//用temp来暂存x的值,使得后续操作不改变x的值
        
        while (temp->next != nullptr) {
            if (temp->next->val == val) {
                temp->next = temp->next->next;
            }
            else temp = temp->next;//else的情况不能忘了判断!
        }
        return x->next;
    }
};

你可能感兴趣的:(Leetcode,#,链表,链表,数据结构)