2010-10-01 117 views
8

你好我仍然是一个学生,我有点困惑堆栈和排队? 第一个问题是,堆栈vs排队?

  1. 什么他们两者之间的主要diffrence是什么?

  2. btw在正常排队旁边有一个循环排队那怎么样?他们如何工作?有什么不同的排队方法吗?

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

  4. 有流行,推等(堆叠和排队),有没有什么像在PHP?

非常感谢您的期待中。

+4

我明白,你是学生,但你应该能够平凡搜索和找到这些问题的答案。 – 2010-10-01 07:30:13

+1

查找LIFO和FIFO。 – 2010-10-01 07:33:20

+1

@noon - 也许他了,但他已经在askied在计算器上30个问题,所以他必须相信给出答案的质量。 – kevchadders 2010-10-01 07:43:38

回答

20

1:当用叠层插入/移除操作上的数据结构的同一端都工作(顶部)

与队列中的插入发生在一个端部(后端)和在另一端(正面)去除。

(两个图像是从相应的维基百科条目)

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

3:和4:见SplStackSplQueue

+0

+1的实际提正确的SPL类型。 – Gordon 2010-10-01 08:01:12

+0

+1。伟大!。让我们看看别人怎么说。 – 2010-10-02 17:43:20

3

看样子你是被操纵朝向差先入先出和后进先出队列之间。堆栈是前者,而循环队列是后者的有效实现。

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

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

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

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

2

A stack添加并从同一端删除项目。

queue添加项背面,并从所述前项(如在银行的线。)

有一个article about them both,在与代码示例详细说明了。

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

7

在PHP中你可以使用一个数组()来保存你的数据都栈和队列,并使用array_ *函数来处理它们。看看array functions at php.net

你有

  • array_push - 把一个新的元素在数组的末尾
  • array_pop - 从数组的末尾删除元素
  • array_shift - 将从头开始删除一个元素阵列
  • array_unshift的 - 把一个新的元素到数组的开头。

  • 对于栈你会使用array_push和array_pop

  • 对您想要使用array_push和array_shift

循环缓冲器我将实现作为一个独立的对象的队列。