关于addFirst方法

来源:4-2 在链表中添加元素

慕粉4184331

2020-03-10

图片描述
课程中的addFirst如上图,此处传入数据e,再把head作为node对象的next,最后把新的node对象赋值给head…这个是不是就相当于它的next指向的是他自己,如果是的话那每次在链表头添加元素不就都没有下一个next了
此处理解感觉和课程讲的不太匹配特来请教

写回答

1回答

liuyubobobo

2020-03-11

不是。


这里的关键是,head 是一个指针(在 Java 中叫引用)。


new Node(e, head) 的意思是,创建了一个内存空间,这个空间里的 value 存的是 e,next 存的是 head 地址,即 next 指向当前 head 所指向的内存。


然后,head = new Node(e, head),这个等号,让 head 指向了新创建的这个内存。但此时,新创建的这个 Node 的 next,依然指向原先 head 指向的那个内存。


head 只是一个指针,指的内存变了,这也就是为什么,在课程的 ppt 中,我要把他们画成箭头。

//img.mukewang.com/szimg/5e67e8e309221f6519061058.jpg

//img1.sycdn.imooc.com/szimg/5e67e8f209149e6b19101070.jpg


继续加油!:)

0
1
慕粉4184331
老师我明白了,new的时候是一个新地址,而作为参数传递的head是原来的地址,所以给head赋值的时候是将head的指向改了
2020-03-11
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程