zoukankan      html  css  js  c++  java
  • 【LeetCode】剑指 Offer 18. 删除链表的节点

    【题目描述】

    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
    返回删除后的链表的头节点。
    注意:此题对比原题有改动

    示例 1:
    输入: head = [4,5,1,9], val = 5
    输出: [4,1,9]
    解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

    示例 2:
    输入: head = [4,5,1,9], val = 1
    输出: [4,5,9]
    解释: 给定你链表中值为1的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

    说明:
    题目保证链表中节点的值互不相同
    若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof

    【提交代码】

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     struct ListNode *next;
     6  * };
     7  */
     8 
     9 
    10 struct ListNode* deleteNode(struct ListNode* head, int val){
    11     struct ListNode *dummy;
    12     struct ListNode *cur;
    13     struct ListNode *p;
    14 
    15     dummy = (struct ListNode *)malloc( sizeof(struct ListNode ) );
    16     dummy->next = head;
    17 
    18     p = dummy;
    19     while( p->next != NULL )
    20     {
    21         cur = p->next;
    22         if( cur->val == val )
    23         {
    24             p->next = cur->next;
    25             break;
    26         }
    27         else
    28         {
    29             p = p->next;
    30         }
    31     }
    32 
    33     return dummy->next;
    34 }

    【解题思路】

    注:建立一个指向头节点的哑节点,保持操作的一致性,避免对删除头节点时的特殊判断;

  • 相关阅读:
    1864: [Zjoi2006]三色二叉树
    3611: [Heoi2014]大工程
    2286: [Sdoi2011]消耗战
    2298: [HAOI2011]problem a
    2037: [Sdoi2008]Sue的小球
    P4512 【模板】多项式除法
    P4238 【模板】多项式求逆
    3771: Triple
    P3365 改造二叉树
    1191: [HNOI2006]超级英雄Hero
  • 原文地址:https://www.cnblogs.com/utank/p/13224724.html
Copyright © 2011-2022 走看看