在
Java中使用基于Vector
的Stack
实现而不是链表实现的动机是什么? 我意识到Vector
是同步的并且具有继承优势(和开销),但我觉得不仅这些数据结构通常在文本中作为基于链表的结构进行教授,而且 LL 避免了在底层数组填充时进行代价高昂的调整大小。
我确实了解,使用摊销分析的Vectors
即使调整大小也是 O(1)。 因此,也许考虑到这一点并没有太大区别,但我很想知道其中的基本原理。
链接列表有以下缺点:
- 每个元素的存储开销
- 必须遵循元素之间的指针/引用的计算复杂性
- 缓存位置错误
当然,这些只是链表的一般缺点;我不知道他们是否影响了Queue
和Stack
依据的决定。
向
量将其数据存储在连续内存中。这对缓存有好处。
链表在内存中可能会变得非常碎片化。