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;
        }
    };
    
  • 相关阅读:
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业01
    学期总结
    C语言I博客作业08
    C语言I博客作业07
  • 原文地址:https://www.cnblogs.com/Tavi/p/12514030.html
Copyright © 2011-2022 走看看