为什么要使用链接列表而不是数组或向量实现来实现堆栈或队列?

Omi*_*SCI 1 data-structures

所以我知道使用向量或数组实现堆栈或队列具有以下属性:

  • 搜索 O(n)
  • 至少使用数组实现(全部在堆栈而不是堆上)
  • O(1) 顶部/前部或后部/底部

如果数组的空间限制是一个问题,您将使用向量来实现堆栈或队列,那么为什么有人会使用链接列表来实现这些数据结构之一呢?任何现实生活中的例子都很棒,如果与数组/向量实现不同,一些基本功能的 Big O 表示法也很棒。

小智 5

对于队列,在操作队列中间的数据(添加/删除)时,链表将提供更快的结果:O(1)。如果使用数组或向量实现,则时间复杂度为 O(n),因为您必须移动其他元素来为新元素创建空间,或填充已删除元素的空间。

至于堆栈,我建议您参考这个答案:Linked list vs.dynamic array for Implementing a stack