你好,我还是学生,我对堆叠和排队有点困惑? 第一个问题是,
他们之间的主要差异是什么?
btw在正常排队旁边有循环排队怎么样?它们是如何工作的?有没有不同的排队方式?
我正在使用php,是否有一个简单(非常简单或易于阅读)的示例代码,我可以学习(链接也可以。)
有pop,push等(堆叠和排队),php中有类似内容吗?
非常感谢您的光临。
答案 0 :(得分:21)
1:使用堆栈时,插入/删除操作都在数据结构的同一端工作(顶部)
有队列,插入发生在一端(后面),另一端(前面)移除。
(两张图片均来自各自的维基百科条目)
答案 1 :(得分:7)
在php中,您将使用array()来保存堆栈和队列的数据,并使用array_ *函数来操作它们。看看array functions at php.net
你有
array_unshift - 将一个新元素放到数组的开头。
对于堆栈,您将使用array_push和array_pop
我将作为独立对象实现的循环缓冲区。
答案 2 :(得分:3)
看起来你正朝着先进先出和后进先出队列之间的差异迈进。堆栈是前者,循环队列是后者的有效实现。
stack是LIFO(后进先出)队列。
您可以拥有circular queue - 这些在通信接口缓冲区中最常见,因为它们的内存有限,数据是异步进入的,并且数据在不同时间由CPU读取。
如果您熟悉您的语言,则可以使用任何语言创建队列。
php website提供了大量文档。
答案 3 :(得分:2)
stack在同一端添加和删除项目。
queue将项目添加到后面并从正面删除项目(就像银行中的一行一样。)
有一个article about them both可以详细解释代码示例。
circular buffer空间有限,不断以循环方式添加项目,覆盖最后的项目。
答案 4 :(得分:1)