根据链接列表上的维基百科文章 ,插入链表中间被认为是O(1)。 我会认为这将是O(n)。 你不需要find可能接近列表末尾的节点吗? 这个分析是否不考虑节点操作的发现(尽pipe这是必需的),而只是插入本身? 编辑 : 链接列表比数组有几个优点。 在列表的特定位置插入元素是一个常量操作,而在数组中插入可能需要移动一半或更多的元素。 上述说法对我有点误导。 纠正我,如果我错了,但我认为结论应该是: arrays: find插入/删除的地方O(1) 执行插入/删除O(n) 链接列表: find插入/删除的地方O(n) 执行插入/删除操作(1) 我认为你唯一不需要find位置的方法就是保持某种指针(就像某些情况下的头部和尾部一样)。 所以我们不能断然地说链表总是为插入/删除选项敲数组。
我想了解为什么Java的ArrayDeque比Java的LinkedList更好,因为它们都实现了Deque接口。 我很难看到有人在他们的代码中使用ArrayDeque。 如果有人对ArrayDeque的实现有更多的了解,这将会有所帮助。 如果我明白了,我会更有信心使用它。 我不能清楚地理解JDK的实现方式,它pipe理头部和尾部引用的方式。