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

    地址 https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/

    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
    
    返回删除后的链表的头节点。
    
    注意:此题对比原题有改动
    
    示例 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 被删除的节点

    解答

    注意三种情况

    1 要删除的节点是头结点 那么直接返回头结点的下一个节点即可 

    return head->next;

    2 要删除的节点是尾节点 那么将要删除的节点的前节点的next置为NULL 即是删除.

    ListNode* prev->next = NULL;  //删除节点是尾部节点

    3 常规删除了 假设删除节点的前一个节点是pre 将prev的next指向删除节点的下一个节点即可

    ListNode*  p;
    ListNode* prev;
    prev->next = p->next;

     

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* deleteNode(ListNode* head, int val) {
            if(head->val == val) return head->next;
            
            ListNode* p = head;
            while(p != NULL){
                if(p->next->val == val){
                   p->next = p->next->next;
                    break;
                }else{
                    p=p->next;
                }
            }
            
            return head;
        }
    };
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* deleteNode(ListNode* head, int val) {
            if(head->val == val) return head->next;
            ListNode* prev = head; ListNode* p = head->next;
            
            while(p!= NULL){
                if(p->val == val){
                    prev->next= p->next;
                    break;
                }else{  
                    prev=p;
                    p=p->next;
                }
            }
            
            return head;
        }
    };
  • 相关阅读:
    HDU 4405 Aeroplane chess (概率dp)
    条件编译符号与公布
    hdu 1722 Cake 数学yy
    电脑显示U盘,可是读取不了
    多本Web前端深度修炼书籍(提供网盘下载链接)
    HDU 5410(2015多校10)-CRB and His Birthday(全然背包)
    Servlet体验之旅(二)——Session、Cookie
    <pre>标签
    每天学点Python之comprehensions
    编写html经常使用而又easy忘记的语句
  • 原文地址:https://www.cnblogs.com/itdef/p/14253114.html
Copyright © 2011-2022 走看看