zoukankan      html  css  js  c++  java
  • leetCode题解之删除单链表中指定的元素

    1、问题描述

    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

    给定一个单链表和一个数值,删除单链表中数据域等于该数值的节点。

    2、问题分析

    遍历一次链表,找到数据域等于给定数值的链表节点,然后删除之。删除链表的操作,就是被删除链表节点的前驱节点直接指向其后继节点,在C++ 中还要记得 delete被删除的链表。

    为了方便处理head节点,可以人为创建一个新节点,新节点的next指向head。

    特例是,输入为空时,直接返回NULL。

    3、代码

     1 ListNode* removeElements(ListNode* head, int val) {
     2         
     3         if(head == NULL)
     4             return NULL;
     5         
     6         ListNode FirstNode(0);
     7         FirstNode.next = head;
     8         
     9         ListNode* p = &FirstNode;
    10         while(p != NULL)
    11         {
    12             ListNode* tmp = p->next;
    13             if(tmp !=  NULL && tmp->val == val )
    14             {
    15                 p->next = tmp->next;
    16                 delete tmp; 
    17             }
    18             else
    19                 p= p->next;
    20         }
    21         
    22         return FirstNode.next;
    23         
    24         
    25     }
    pp
  • 相关阅读:
    BZOJ 1449: [JSOI2009]球队收益 最小费用最大流 网络流
    HDU 4348 To the moon 主席树 在线更新
    省选模拟赛20180416
    线性基总结
    Write-up-Bulldog2
    [Write-up]BSides-Vancouver
    Write-up-Bob_v1.0.1
    Genymotion设置代理至BurpSuite和Charles
    PE之RVA转FOA
    django的序列化
  • 原文地址:https://www.cnblogs.com/wangxiaoyong/p/8669160.html
Copyright © 2011-2022 走看看