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

以下程序是关于linkedlist中的addfirst()的问题,麻烦知道的帮忙看一下~

以下程序是关于linkedlist中的addfirst()的问题,麻烦知道的帮忙看一下~

桃花长相依 2022-01-18 15:11:17
publicvoidaddFirst(Ee){addBefore(e,header.next);}、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、privateEntry<E>addBefore(Ee,Entry<E>entry){Entry<E>...
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

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-01-23
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

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