php 堆栈与排队?

ddhy6vgd  于 2022-12-02  发布在  PHP
关注(0)|答案(7)|浏览(139)

你好,我还是一个学生,我对堆叠和排队有点困惑?第一个问题是,
1.他们两个之间的主要区别是什么?
1.顺便说一句,除了正常排队外,还有循环排队,那怎么样?它们是如何工作的?有没有不同的排队方式?
1.我在使用php,有没有一个简单的(非常简单或容易阅读)示例代码,我可以学习(链接也可以)?
1.有pop,push和etc(堆叠和排队),在php中有类似的东西吗?
非常感谢你的来访。

insrf1ej

insrf1ej1#

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

对于队列,插入发生在一端(后端),而移除发生在另一端(前端)。

(Both图片来自各自的维基百科条目)
2:参见http://en.wikipedia.org/wiki/Circular_buffer
3:和4:参见SplStackSplQueue

yfjy0ee7

yfjy0ee72#

在php中,您可以使用array()来保存堆栈和队列的数据,并使用array_* 函数来操作它们。
您已

  • array_push -将一个新元素放到数组末尾
  • array_pop -从数组末尾删除一个元素
  • array_shift -从数组开头删除一个元素
  • array_unshift -将一个新元素放到数组的开头。
  • 对于堆栈,可以使用array_push和array_pop
  • 对于一个队列,可以使用array_push和array_shift

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

enyaitl3

enyaitl33#

看起来你正被引导到先进先出和后进先出队列之间的区别。堆栈是前者,循环队列是后者的有效实现。

  1. stack是LIFO(后进先出)队列。
    1.您可以使用circular queue-这在通信接口缓冲区中最为常见,因为它们的内存有限,数据以异步方式传入,并且CPU在不同时间读取数据。
    1.如果您非常了解自己的语言,则可以使用任何语言创建队列。
  2. php website提供了大量文档。
kdfy810k

kdfy810k4#

stack从同一端添加和删除项。
queue将项目添加到后面,并从前面删除项目(就像银行中的一行)。
有一个article about them both,用代码示例详细解释。
circular buffer的空间有限,并且以循环方式不断添加项目,覆盖末尾的项目。

bybem2ql

bybem2ql6#

这只是第一个问题的答案,帖子很旧了,但还是想分享,因为我喜欢这张图片,尽管试管通常是用来装液体的:)

e4eetjau

e4eetjau7#

Stack是一个DS,其中的元素只能从一侧插入和删除。它遵循LIFO原则,即后进先出。想象一下一堆书,你只能挑选出你最后放置的那本书,也就是栈顶的那本书。
队列是一个数据结构,其中的元素可以从一端插入,从另一端删除,它遵循先进先出的原则;先进先出。2想象一下在快餐店排队的情形,先站的人应该先得到服务。
循环队列是一种特殊类型的队列,它的第一个元素和最后一个元素是相连的。这种修改确保了队列中没有空闲空间,并且每个元素都得到了利用。
这是一个很好的PHP资源:https://www.php.net/manual/en/function.array-push.php

相关问题