老师,对于虚拟头节点我有一点不理解
来源:1-3 使用链表的虚拟头结点
要快乐_
2021-03-05 14:34:14
对于虚拟头节点,实例化他的时候传入的参数为两个null,那么如何判断他的next就是指向0的呢?
这样的话在下面代码中

prev.next不管循环多少次,他也是null啊,再到下一步prev.next=new Node(e,prev.next)
不就相当于prev.next=new Node(e,null)吗,这样next不就永远都指向null了吗
1回答
实例化的时候传入两个 null,是因为初始链表是空链表。
当添加一个节点以后,dummyHead 的 next 就不是 null 了。
对应你的代码,在添加第一个元素的时候,index 为 0,上面的代码中的 for 不会执行,直接执行 prev.next = new Node。而此时,prev 就指向 dummyHead,所以就是 dummyHead.next = new Node,为链表添加了第一个节点。
实际运行添加节点的程序,尝试添加 3 个节点,然后用单步跟踪的方式看一下整个程序的运行,看看在每一个节点添加的过程中,整个程序是怎么运行的?每一步,prev 都是什么?最后,新的节点有没有被添加?
继续加油!:)
相似问题