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

    剑指Offer:删除链表的节点

    题目要求:
    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
    返回删除后的链表的头节点。

    解题思路:

    1. 单链表删除节点,直接将当前节点的指针指向下一个节点的next即可;
    2. 因为该题是查找节点中的值是否等于给定值,并且找到之后无法向前找节点;
    3. 在确认是否是要删除的节点前,将头指针先保存,在移动到下一个节点判断;
    4. 找到删除节点的话,直接将上一个头指针,下一个节点的next。

    注意:
    删除头节点,返回头节点的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) 
        {
            ListNode *ptr;
            ListNode *node;
            ptr=head;
            if(head->val==val)
            {
                ptr=head->next;      //若删除的是头指针
                return ptr;
            }
            while (head != NULL)
            {
                node=head;  
                head=head->next; 
                if(head->val==val)
                {
                    node->next=head->next;
                    return ptr;
                }
            }
            return NULL;
        }
    };
    
  • 相关阅读:
    Adobe Flash Player 设置鼠标点不到允许或者拒绝!
    bzoj2096
    bzoj2789
    LA3353
    poj2594
    bzoj2427
    bzoj1076
    bzoj2818
    bzoj3668
    bzoj2006
  • 原文地址:https://www.cnblogs.com/Tavi/p/12514030.html
Copyright © 2011-2022 走看看