哪个更有效:使用数组进行堆栈或使用 LinkedList 进行堆栈(对于大数据)以及为什么?

问题描述 投票:0回答:1

就时间复杂度和空间复杂度而言,哪个更有效:使用数组的堆栈或使用链表的堆栈(对于大数据)以及为什么?请尽可能详细地解释一下。

如果我们已经使用具有恒定时间复杂度的数组获得了有效的解决方案,为什么还需要使用链表来实现堆栈?有人说我们对堆栈使用链表实现,因为在内置数组方法中存在不必要的索引,但这在时间复杂度方面并没有被认为是更有效的方式,而且在内存使用方面也没有被认为是这样也有足够的内存使用来在链表中创建节点。

请有人帮助我理解这一点,或者如果我的想法错误请告诉我。

我已经搜索过谷歌,但可以找到任何良好的相关性。

arrays data-structures linked-list stack
1个回答
0
投票

好吧,如果您想使用恒定大小的数据,那么您的答案很简单,那么数组是最好的方法,因为您知道数组的大小,但如果您不知道大小,则最好使用链表。
你可能会说我会根据你的要求声明一个最大大小或最高限制的数组,如果你不存储那么多数据,那么内存就会被浪费,而且如果数据大小大于声明值那么您需要调整数组的大小,这在时间和空间方面都是一项成本高昂的操作。
因此,建议使用链表来实现动态大小的数据目的,因为链表的大小并不重要,而且在任何情况下都不会浪费任何内存,您可以使用额外的空间来存储指针,但它的kkk。
因此,链表效率更高。数组将使用恒定的时间来使用索引访问数据,但由于大小恒定,您正在使用大量内存。
例如: 您声明了一个大小为 1000 的数组,但仅在其中存储了 100 个元素。内存效率高吗? 您的数组将占用 1000*(4)(对于 int)= 4000 字节。
用于存储一百个元素:100*(4) = 400 字节 这里你浪费了3600字节的内存,是kkk吗? 通过使用链表 100*(4+4) = 800 字节(4 字节用于数据,4 字节用于 int 指针)
这里明确的链表是非常有效的。 唯一的问题是你不能在恒定时间内随机访问元素。

© www.soinside.com 2019 - 2024. All rights reserved.