zoukankan      html  css  js  c++  java
  • Leetcode题目:Remove Linked List Elements

    题目:

    Remove all elements from a linked list of integers that have value val.

    Example
    Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
    Return: 1 --> 2 --> 3 --> 4 --> 5

    题目解答:

    这个题目非常简单,就是来删除在链表中出现的值为val的节点,并返回删除之后的链表。

    1,为链表增加一个虚拟的头结点,从而减少了很多冗余的判断条件,十分简单。

    2,代码结束时,需要注意将自己申请的那个虚拟头结点的空间释放掉。

    代码:

    /**
     * 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 *Head = new ListNode(-1);
            Head -> next = head;
            ListNode *p = Head;
            ListNode *q = Head -> next;
            while(q != NULL)
            {
                while((q != NULL) && (q -> val != val))
                {
                    p = p -> next;
                    q = q -> next;
                }
                if(q == NULL)
                {
                    break;
                }
                if(q -> val == val)
                {
                    ListNode *r = q ->next;
                    p -> next = r;
                    delete q;
                    q = r;
                }
            }
            p = Head -> next;
            delete Head;
            return p;
        }
    };

  • 相关阅读:
    编程之美-2.18 数组分割
    话题模型
    暂时跳过的Leetcode题目
    LDA主题模型
    二叉树非递归的统一实现
    取余和取模运算
    IDM非补丁破解方法
    两种建立堆的方法HeapInsert & Heapify
    非阻塞connect:Web客户程序
    非阻塞connect
  • 原文地址:https://www.cnblogs.com/CodingGirl121/p/5413976.html
Copyright © 2011-2022 走看看