zoukankan      html  css  js  c++  java
  • [入门]删除链表中的元素

    题目来源:http://www.lintcode.com/zh-cn/problem/remove-linked-list-elements/

    1、用当前节点判断下一节点的val,所以循环结束标识是while (temp->next != NULL),而不能是while(temp!=NULL)
    2、定义一个dummy,作为head的上一节点,不然写起来非常麻烦。
    3、注意题目的模板,在模板基础上增加,不然会出错

     1 /*
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution
    10  {
    11 public:
    12 /*
    13  * @param head a ListNode
    14  * @param val an integer
    15  * @return a ListNode
    16  */
    17     ListNode *removeElements(ListNode *head, int val) 
    18     //函数removeElements
    19     //输入:head,一个ListNode类型的指针,是链表头指针;val,int类型
    20     //返回:ListNode类型的指针,是删除元素后的链表头地址
    21     {
    22         ListNode dummy;//定义一个ListNode类的对象dummy
    23         dummy.next = head;//dummy的下个节点是head,这个是精华,不定义dummy写起来很麻烦
    24         ListNode *temp = &dummy;//创建临时指针temp,首先指向dummy,用当前节点判断下一节点的val
    25         while (temp->next != NULL) //没到最后一个节点(不包括最后一个节点)
    26         //不能写成temp!=NULL,这样到最后一个节点的时候temp->next->val会出错
    27         {
    28             if (temp->next->val == val) //从第一个节点head开始判断
    29                 temp->next = temp->next->next;//把变量等于val的节点删除
    30             else 
    31                 temp = temp->next;//否则只是移动temp到下一个节点
    32         }     
    33         return dummy.next;//返回删除元素后的链表头地址
    34     }
    35 };
  • 相关阅读:
    webform--常用的控件
    .net嵌入c#代码(投票练习)
    webform之session传值(临时数据的存储)与扩展属性 --(购物车练习)
    ASP.NET aspx页面中 写C#脚本; ASP.NET 指令(<%@%>);
    LinQ操作
    什么是C# Lambda表达式?形如:p=>p.abc
    winform基础
    3D计算机图形学读书笔记—Wat版本
    计算机图形学的领域与分类
    NetBeans中文乱码解决办法
  • 原文地址:https://www.cnblogs.com/hslzju/p/5408183.html
Copyright © 2011-2022 走看看