老师,对于虚拟头节点我有一点不理解

来源:1-3 使用链表的虚拟头结点

要快乐_

2021-03-05 14:34:14

对于虚拟头节点,实例化他的时候传入的参数为两个null,那么如何判断他的next就是指向0的呢?

这样的话在下面代码中

http://img.mukewang.com/climg/6041d04009cc7e8a03900129.jpg

prev.next不管循环多少次,他也是null啊,再到下一步prev.next=new Node(e,prev.next)

不就相当于prev.next=new Node(e,null)吗,这样next不就永远都指向null了吗

写回答

1回答

liuyubobobo

2021-03-05

实例化的时候传入两个 null,是因为初始链表是空链表。


当添加一个节点以后,dummyHead 的 next 就不是 null 了。


对应你的代码,在添加第一个元素的时候,index 为 0,上面的代码中的 for 不会执行,直接执行 prev.next = new Node。而此时,prev 就指向 dummyHead,所以就是 dummyHead.next = new Node,为链表添加了第一个节点。


实际运行添加节点的程序,尝试添加 3 个节点,然后用单步跟踪的方式看一下整个程序的运行,看看在每一个节点添加的过程中,整个程序是怎么运行的?每一步,prev 都是什么?最后,新的节点有没有被添加?


继续加油!:)

1

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2638 学习 · 1091 问题

查看课程