堆栈与排队?

时间:2010-10-01 07:28:15

标签: php stack queue

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

  1. 他们之间的主要差异是什么?

  2. btw在正常排队旁边有循环排队怎么样?它们是如何工作的?有没有不同的排队方式?

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

  4. 有pop,push等(堆叠和排队),php中有类似内容吗?

  5. 非常感谢您的光临。

5 个答案:

答案 0 :(得分:21)

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

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

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

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

3:和4:见SplStackSplQueue

答案 1 :(得分:7)

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

你有

  • array_push - 在数组末尾添加一个新元素
  • array_pop - 从数组末尾删除元素
  • array_shift - 从数组的开头删除一个元素
  • array_unshift - 将一个新元素放到数组的开头。

  • 对于堆栈,您将使用array_push和array_pop

  • 对于队列,您将使用array_push和array_shift

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

答案 2 :(得分:3)

看起来你正朝着先进先出和后进先出队列之间的差异迈进。堆栈是前者,循环队列是后者的有效实现。

  1. stack是LIFO(后进先出)队列。

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

  3. 如果您熟悉您的语言,则可以使用任何语言创建队列。

  4. php website提供了大量文档。

答案 3 :(得分:2)

stack在同一端添加和删除项目。

queue将项目添加到后面并从正面删除项目(就像银行中的一行一样。)

有一个article about them both可以详细解释代码示例。

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

答案 4 :(得分:1)