代码之家  ›  专栏  ›  技术社区  ›  Adam Ramadhan

叠加与排队?

  •  9
  • Adam Ramadhan  · 技术社区  · 15 年前

    你好,我还是一个学生,我有点困惑的堆叠和排队? 第一个问题是,

    1. 他们之间的主要区别是什么?

    2. 顺便问一下,正常排队旁边有循环排队,那怎么样?它们是如何工作的?排队有什么不同的方法吗?

    3. 我正在使用PHP,有没有一个简单(非常简单或易于阅读)的示例代码可以供我学习(链接也可以)。?

    4. 有pop、push等(堆叠和排队),在php中有类似的东西吗?

    非常感谢您的光临。

    5 回复  |  直到 15 年前
        1
  •  21
  •   Community Mohan Dere    9 年前

    1:对于堆栈,插入/删除操作都在数据结构的同一端(顶部)工作。

    在队列中,插入发生在一端(后面),删除发生在另一端(前面)。

    (两张图片都来自各自的维基百科条目)

    2:看 http://en.wikipedia.org/wiki/Circular_buffer

    3:和4:请参见 SplStack SplQueue

        2
  •  7
  •   thomasmalt    15 年前

    在PHP中,您将使用array()来保存堆栈和队列的数据,并使用array_*函数来操作它们。看看 array functions at php.net

    你有

    • array_push-在数组末尾放置一个新元素
    • array_pop-从数组末尾删除元素
    • 数组移位-从数组开头移除元素
    • array_unshift-在数组的开头放置一个新元素。

    • 对于一个堆栈,您可以使用array_push和array_pop

    • 对于一个队列,你可以使用array-push和array-shift

    我将作为独立对象实现的循环缓冲区。

        3
  •  3
  •   PP.    15 年前

    似乎您正朝着先进先出和后进先出队列之间的差异前进。堆栈是前者,循环队列是后者的有效实现。

    1. stack 是后进先出队列。

    2. 你可以有一个 circular queue -这些在通信接口缓冲区中最常见,因为它们的内存有限,数据异步进入,CPU在不同时间读取数据。

    3. 如果您非常了解您的语言,那么可以使用任何语言创建队列。

    4. 这个 php website 提供了很多文档。

        4
  •  2
  •   JoshD    15 年前

    stack 从同一端添加和删除项。

    queue 将项目添加到后面并从前面删除项目(如银行中的行)。

    有一个 article about them both 这就详细解释了代码示例。

    circular buffer 空间有限,以循环方式不断添加项目,覆盖末尾的项目。