zoukankan      html  css  js  c++  java
  • lintcode-452-删除链表中的元素

    452-删除链表中的元素

    删除链表中等于给定值val的所有节点。

    样例

    给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。

    标签

    链表

    思路

    删除结点,使用 3 个指针即可,分别指向待删节点,待删节点前节点,待删节点后节点

    code

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    
    class Solution {
    public:
        /*
         * @param head: a ListNode
         * @param val: An integer
         * @return: a ListNode
         */
        ListNode * removeElements(ListNode * head, int val) {
            // write your code here
            if (head == NULL) {
                return head;
            }
            ListNode * newHead = new ListNode(0);
            newHead->next = head;
            ListNode * temp = head, *p = newHead, *q = temp->next;
            while (temp != NULL && temp->next != NULL) {
                if (temp->val == val) {
                    p->next = q;
                    delete temp;
                }
                else {
                    p = p->next;
                }
                temp = temp->next;
                if (q->next != NULL) {
                    q = q->next;
                }
            }
            if (temp->next == NULL && temp->val == val) {
                p->next = NULL;
            }
            return newHead->next;
        }
    };
    
  • 相关阅读:
    hdu5514 非2的次幂容斥原理
    「NOIP2015」斗地主
    「NOIP2009」靶形数独
    「CF521D」Shop
    「HNOI2015」菜肴制作
    「NOIP2011」观光公交
    「NOI2015」荷马史诗
    「JSOI2007」建筑抢修
    「CF161B」Discounts
    叠罗汉
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7399623.html
Copyright © 2011-2022 走看看