【问题标题】:Stack and Queue Methods堆栈和队列方法
【发布时间】:2017-07-22 04:02:48
【问题描述】:

这是一本名为“面向 Web 开发人员的专业 Javascript”一书中的节选。

上面写着:

“关于 ECMAScript 数组的一个有趣的事情是,它们提供了一种使数组表现得像其他数据结构一样的方法。数组对象可以像堆栈一样工作,堆栈是一组数据结构中的一个限制项目的插入和移除。堆栈被称为后进先出 (LIFO) 结构,这意味着 最近添加的项目是第一个被移除的项目.

我在这里很困惑。堆栈是插入和移除或项目的受限方法吗?它说“一组限制插入和删除项目的数据结构”。 --> 即“限制”。然后它说的正好相反:“堆栈被称为后进先出 (LIFO) 结构,这意味着最近添加的项是第一个被删除的项。”

然后,队列方法也一样:

就像堆栈在 LIFO 数据结构中限制访问一样,队列在先进先出 (FIFO) 数据结构中限制访问。队列将项目添加到列表的末尾并从列表的前面检索项目

再次,它说它限制访问,然后它说这是“添加和检索”项目..

我疯了,还是这完全矛盾?

【问题讨论】:

    标签: stack queue


    【解决方案1】:

    堆栈是后进先出 (LIFO) 结构,而队列是先进先出 (FIFO) 结构。它们都在插入和移除项目的顺序上受到限制。这意味着对于堆栈,您只能删除最后推送的项目;而对于队列,您只能按照推送的顺序删除项目。如果您将 1、2、3 放入堆叠中,则它们只能以相反的顺序移除 - 3、2、1。可以将其视为彼此堆叠的板。接下来是队列,如果你插入1、2、3,你只能按照1、2、3的顺序移除它们。你可以把队列想象成办公室、公交车站等地方的等待“队列”,人们进入并以相同的顺序退出队列。

    【讨论】:

    • 非常感谢您的回答。我理解 LIFO 和 FIFO 之间的区别,但我对这句话特别感到困惑:'......限制项目的插入和移除。”。所以,两者都不限制插入和移除。它们限制插入的顺序和移除。对吧?
    • 嗯,它的意思是一样的,限制插入和删除的顺序。此外,如果队列堆栈已满,则无法插入。
    猜你喜欢
    • 2011-12-01
    • 2014-07-21
    • 2013-09-18
    • 2015-11-16
    • 2019-03-07
    • 2021-04-29
    • 2021-03-17
    • 2014-04-21
    • 2015-09-19
    相关资源
    最近更新 更多