【问题标题】:Which type of data structure is a stack?哪种数据结构是栈?
【发布时间】:2016-04-27 02:01:48
【问题描述】:

我有一个简单的问题:哪种数据结构是堆栈?它是静态数据结构还是动态数据结构?我一直在寻找答案但找不到它,因此我得到了自己的“解释”——我想,当你可以通过使用数组或链表来实现它时,它可以是......两者?,取决于在执行?我的推理有意义吗?

【问题讨论】:

  • @scottb 不是那种栈 :)
  • @scottb 我认为当前的问题是指称为 stack 的常用数据结构,而不是 stack (在操作系统中)vs 堆差异。

标签: data-structures stack


【解决方案1】:

根据定义,静态数据结构具有固定大小。如果您可以将堆栈的大小限制为某个预先确定的数字,那么您的堆栈将成为静态数据结构。它的大小是它的存储大小,加上指示当前位置的堆栈指针或堆栈索引的大小。

一个无限容量的栈是一个动态数据结构,不管它的实现如何。它可以使用链表或数组来实现,您在达到其容量时重新分配,但是当您添加或删除数据时,此类堆栈的大小会发生变化。

【讨论】:

  • 我认为这很有趣,例如C++ 默认使用std::deque 来实现堆栈,该堆栈由连续块的块组成,因此它是一个动态结构,可确保分摊的 O(1) 插入(仅在超过当前块的容量时才发生重新分配)。
【解决方案2】:

首先,Stack 本身就是一个数据结构。堆栈是可扩展的,曾经使用过的实现。尽管堆栈的大小可以固定,但它可以包含的最大元素数。但通常您会喜欢将其视为随着元素数量的增加而扩展的动态结构。通常它以 ADT(抽象数据类型)的形式出现,因此无论使用哪种结构(LinkedList、Array、ArrayList 等)来实现它,它的功能和属性总是相同的

【讨论】:

    猜你喜欢
    • 2020-01-25
    • 2012-05-15
    • 2017-10-27
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    相关资源
    最近更新 更多