波波老师,关于prev的使用我还是没明白,它只是方法里面的一个对象,使用完方法后,head还是没动啊,那不是相当于没插入节点嘛

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

爱西瓜同志

2018-11-15

图片描述

写回答

1回答

liuyubobobo

2018-11-15

可以先理解在链表末尾插入元素。


我们先通过遍历的方式,让prev指向链表的最后一个节点。之后,prev->next连接上了新的节点。是的,函数结束以后,prev这个“指针”消失了,但是在这个过程中,prev所指向的内存的next被改变了。所以,head所指向的这个节点,一直遍历下去,也被改变了。


注意,这和改变prev有本质区别。如果是prev=x,只是改变prev的指向,函数结束后,prev丢失了,他指向什么都没有保存住。但prev.next=x,改变的是prev所指向的那个内存的next,函数结束以后,prev这个“指针”也消失了,但prev所指向的内存的next被改变了。


在链表中间插入节点同理。


对这一点有疑问,你可能还是对Java语言中,到底什么是引用,什么引用所指的那个真正的内存有疑问:)再仔细体会一下:)


加油!:)

2
4
爱西瓜同志
回复
liuyubobobo
是的是的,原来之前一直没理解引用,现在搞懂了
2018-11-15
共4条回复

玩转数据结构

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

6221 学习 · 1704 问题

查看课程