链接列表何时是使用

时间:2016-10-01 13:01:15

标签: data-structures complexity-theory

真的像标题一样。我的问题是你能给出一个例子,其中链表是最好的数据结构。我一直在努力思考任何问题,在我的代码中,我几乎总是使用哈希映射或列表等。

http://bigocheatsheet.com/在这里你可以看到Big O的作弊表,用于各种操作。就复杂性而言,链表并不比堆栈或队列好。所以我想知道有人可能会使用链表而不是这些?一个完美的答案会说"想象一下我正在尝试做XYZ,如果我用数组做它看起来像这样{输入一些代码},但是,如果我用链表做,它看起来像这个{输入更多代码}。链表的复杂性或空间明显更好。"等。

如果有人告诉我链接列表是什么,我不想要答案。我知道链接列表是什么以及它们是如何实现的。

由于

2 个答案:

答案 0 :(得分:1)

考虑一下你是否有一群人,而在中间的某个地方你想要添加很多人。如果您使用传统的ArrayList,则需要在其后移动所有元素,因此O(N)因为每人索引!在LinkedList中,每个人都是O(1),O(N)到达中间。链接列表在中间添加元素非常快,因为您不需要重新索引任何内容,只需调整本地指针。

答案 1 :(得分:1)

有人对C ++标准模板库进行了调查,发现链表是所有常见基本结构中使用最少的。所以你是对的,他们没有太多使用。当您不需要随机访问数组,当您不知道N或N的上限相当紧密,以及插入和删除是常见且时间紧迫时,它们非常有用。中间的插入是O(N),与数组一样,但实际操作要便宜很多(指针取消引用而不是内存移位),开头的插入是O(1),如果你保持最后的插入结束指针。