为了账号安全,请及时绑定邮箱和手机立即绑定

你好吗,关于linkedlist中的addfirst()的情况是什么意思?

你好吗,关于linkedlist中的addfirst()的情况是什么意思?

小怪兽爱吃肉 2022-02-10 11:03:57
publicvoidaddFirst(Ee){addBefore(e,header.next);}、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、privateEntry<E>addBefore(Ee,Entry<E>entry){Entry<E>...
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

LinkedList里储存的其实是Entry而不仅仅是外面看上去的元素,每个Entry里有三个元素:值本身,排在这个Entry前的那个Entry,排在这个Entry后的那个Entry。表里的所有Entry就这样前后一个钩一个连在一起,这就是为什么这种List叫LinkedList的原因。

现在已经有一个LinkedList了,我要往里加一个新元素,而且指定要加在某Entry(我们叫它x,程序里它叫entry)之前,也就是要插在x和x前面那个Entry(我们叫它y,也就是x.previous)之间,那么新的Entry是怎么样的呢?它里面的三个元素是新元素值(e),它前面的那个Entry(自然是y),它后面那个Entry(自然是x),所以有这句
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
有了这句还不够,还得把原来y和x之间的连接敲断,重新接到这个新加的Entry上。newEntry.previous(就是y)的后一个Entry就是新Entry:
newEntry.previous.next = newEntry;
而newEntry.next(就是x)的前一个Entry也是新Entry:
newEntry.next.previous = newEntry;

查看完整回答
反对 回复 2022-02-14
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

重在实践,别人说什么都不如自己运行一次来的实在。
LinkedList
LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点:
操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方
不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。
说白了,LinkedList是数据结构中链式存储

查看完整回答
反对 回复 2022-02-14
  • 2 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信