【剑指Offer】删除链表的节点
发布日期:2022-02-10 08:55:13 浏览次数:34 分类:技术文章

本文共 863 字,大约阅读时间需要 2 分钟。

题目

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

注意:此题对比原题有改动

思路

最简单的链表删除,要用一个指针记录上一次的节点,然后注意删除的是头结点的情况,为了减少时间,删除以后立即跳出循环。

代码

/** * 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 == NULL){            return NULL;        }                if(head->val == val){            if(head->next == NULL){                return NULL;            }else{                return head->next;            }        }           ListNode* p = head->next;        ListNode* pLast = head;        while(p != NULL){            if(p->val == val){                pLast->next = p->next;                break;            }            pLast = p;            p = p->next;        }        return head;    }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105595806 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】机器人的运动范围
下一篇:【剑指Offer】二叉树的镜像

发表评论

最新留言

不错!
[***.144.177.141]2024年05月06日 04时02分37秒