栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中,为什么在链表中插入或删除是恒定时间操作?这不是误导吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中,为什么在链表中插入或删除是恒定时间操作?这不是误导吗?

首先:

linkedList
Sun
JDK中实现的有效地具有到最后一个元素以及到第一个元素的链接(只有一个
head
条目,但
head.previous
指向最后一个元素)。这意味着即使在最坏的情况下,通过列表导航到索引所指示的元素也应执行n
/ 2次操作。这也是一个双向链表。

除此之外:

linkedList
因为不需要遍历所有元素,所以简单地将O(1)插入a的开头或结尾。

在其他任何地方插入/删除都取决于您执行的方式!如果使用

Iterator
(的a
ListIterator
表示加法),则该操作也可以是O(1),因为该操作
Iterator
已经具有对相关条目的引用。

但是,如果您正在使用

add(int,E)
remove(int)
linkedList
则将必须
找到 相关条目(O(n)), 然后 删除元素(O(1)),因此整个操作将为O(n)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/428516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号