Java 关于Linked List 数据结构 remove方法
这个remove方法用来删除链表data里的某个item可见倒数第三行代码:node.next=node.next.next;这句把新建的node链表里的目标item删除...
这个remove方法用来删除链表data里的某个item
可见倒数第三行代码: node.next = node.next.next;
这句把新建的node链表里的目标item删除了,但是这不是只删除的方法里新建的临时node的item吗,这样原本链表data里的数据没有被更改吧。
但这是老师上课讲的例子,应该是可行的?可为什么没有修改data的内容只修改了新建链表node的内容? 展开
可见倒数第三行代码: node.next = node.next.next;
这句把新建的node链表里的目标item删除了,但是这不是只删除的方法里新建的临时node的item吗,这样原本链表data里的数据没有被更改吧。
但这是老师上课讲的例子,应该是可行的?可为什么没有修改data的内容只修改了新建链表node的内容? 展开
1个回答
展开全部
node其实就是data,因为Node<E> node=data并没有使用new关键字,事实上node和data指向的是同一块内容区域,也就是说只要两者中的一个改变了值,另一个的值也会改变,所以无论修改哪一个对象的值都行。
更多追问追答
追问
可是这样的话,while循环已经把node的开头移动到item位置了,如果data链表也是这样的话岂不是item前面的所有的也都没了?
追答
我之前说的不准确,while循环执行的内容你可以理解为是:node=data.next,
这个循环的作用事实上是在data中找到与item相等的元素,执行完之后node.next就是那个与item相等的元素,然后用node.next.next的值将node.next覆盖,也就相当于删掉了node.next这个值,那么与item相等的元素也就被删掉了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询