老师,有个问题一直想不通,删除倒数第n个节点的问题。

来源:5-6 链表与双指针 Remove Nth Node Form End of List

幕布斯2628834

2022-02-17

老师,有个问题一直想不通,删除倒数第n个节点的问题。为什么dummyHead->next就是答案?代码操作的不是p和q两个ListNode吗?为什么就影响了dummyHead?

写回答

1回答

liuyubobobo

2022-02-18

我不确定我是不是理解了你的问题。


简单来说,这个问题(包括链表的所有问题),都是在对链表进行了操作以后,返回链表的头结点。你对链表的操作不一定发生在头结点。比如这个问题,哪怕让你删除链表的最后一个节点,在删除以后,根据题意,也要返回链表的头结点。因为通过链表的头结点,我们就能遍历整个链表,就能看到整个链表是什么样子的。


请你看我在课程中写的测试用例:https://github.com/liuyubobobo/Play-with-Algorithm-Interview/blob/master/05-About-Linked-List/Course%20Code%20(C%2B%2B)/06-Remove-Nth-Node-From-End-of-List/main2.cpp

其中的 103 和 105 行。如果单纯看这两行中 head 这个节点本身,是没有变化的。但是 103 和 105 行遍历了整个链表,打印出整个链表序列,就是有区别的了。


==========


如果你的问题是,为什么对 p 或者 q 操作之后,103 和 105 行的打印结果是有区别的,那你的问题就更基础一些。对此,我的建议是,先不要刷题(除非你的时间特别紧),去找专门的数据结构的教材,把链表相关的所有操作的逻辑(增删改查)都理清楚,搞明白这些基础操作都是为什么成立的。


如果愿意可以参考我的这个课程:https://class.imooc.com/sale/datastructure  (注意,这个课程是使用 Java 讲解的。)当然不学习这个课程也没有问题,基本上任何基础的数据结构教程都一定会详细介绍链表的。


继续加油!:)

0
0

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程