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
解析:
根据给定的元素删除与元素相等的节点。
定义一个指针temp,初始时temp=head,判断temp->next是否是给定值,如果是则把temp->next->next赋给temp->next。因为最初从temp->next开始判断,所以最后要判断一下head的数值是否与给定元素相等。这里通过比较temp->next,省下了再定义当前节点前一个节点指针,相当于temp即为匹配节点的前驱。
具体代码如下:

/**
 * 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) {
        if(head == NULL)
            return head;
        ListNode* temp = head;
        ListNode *pre = NULL;
        while(temp->next != NULL)
        {
            if(temp->next->val == val)
                temp->next = temp->next->next;
            else
                temp = temp->next;
        }
        return head->val == val ? head->next:head;
    }
};

运行结果:

One Comment

Add a Comment

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据