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 }

    【解题思路】

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

  • 相关阅读:
    [ICPC2016上海F] Mr. Panda and Fantastic Beasts
    [ICPC2016上海E] Bet
    [ICPC2016上海D] Ice Cream Tower
    [ICPC2016上海L] World Cup
    [CCPC2020长春F] Strange Memory
    [CF1495C] Garden of the Sun
    【实战】牛年的第一个SQL注入漏洞
    【实战】一次有趣的HPP绕WAF记录
    [模板]二分答案
    字典树及其应用
  • 原文地址:https://www.cnblogs.com/utank/p/13224724.html
Copyright © 2011-2022 走看看