【问题标题】:Stacks, Queue, Deque - When to use what?Stacks, Queue, Deque - 什么时候用什么?
【发布时间】:2015-07-09 06:28:05
【问题描述】:

如果这个问题太简单或已经回答,我提前道歉。我在 stackoverflow 上找不到任何类似的问题,也无法在网上找到有用的信息。

我目前正在处理堆栈/队列/双端队列。我知道它们的行为方式(LIFO、FIFO,然后 deques 两者都这样做),但我正在努力找出目的。

  • 这 3 个 ADT 可能用于什么?
  • 可以将其中一个用于另一个以获得更好的结果吗?我认为总是使用双端队列会很聪明,因为它提供与队列和堆栈相同的方法——我错了吗?
  • 性能(如速度)如何?使用时需要注意什么?

【问题讨论】:

  • 在最基本的层面(直接使用这些)我不会使用双端队列来代替队列或堆栈。使用其中之一代替堆栈意味着您永远不能依赖它作为堆栈。任何人都可以破坏堆栈的定义,为他们提供危险的功能。

标签: java queue deque


【解决方案1】:

堆栈/队列是用于各种计算机科学领域(如操作系统、计算机网络)的基本数据结构。

LIFO、FIFO 等操作根据任务的目的在各种场合使用,例如图形(另一种数据结构),而实现 BFS 使用队列来存储节点,进一步使用 FIFO 等基本操作。

而且,是的,速度很重要。但是,我们还需要注意内存限制。

附:这些数据结构及其操作似乎无关紧要,但随着您的深入研究,您会意识到许多出色的算法都是基于这些本身。

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 2012-08-07
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多