PHP队列

本文实例讲述了PHP队列原理及基于队列的写文件案例。分享给大家供大家参考,具体如下:

队列是一种线性表,按照先进先出的原则进行的:

入队:

出队:

PHP实现队列:第一个元素作为队头,最后一个元素作为队尾

$array = array('PHP', 'JAVA');
array_push($array, 'PYTHON'); //入队列
array_shift($array); //出队列

栈、队列

只允许访问一个数据项:即最后插入的数据项,移除这个数据项后才能访问倒数第二个插入的数据项,依此类推。
队列有点类似,只是在队列中第一个插入的数据项会最先被移除(先进先出,FIFO),而在中,最后插入的数据项最先移除(LIFO)。队列一样也被用作程序员的工具。它也可以用于模拟真实世界的环境,例如模拟人们在银行里排队等待

什么是双端队列(或双向队列)?

即元素可以在队列的任意一段入队或出队,如果我们把这些方法叫做insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端队列功能就和栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和队列一样了。双端队列与栈或队列相比,是一种多用途的数据结构。

双端队列顾名思义,他有两个端,什么端呢,一般的队列也是有两个端,一个输入,一个输出。双端队列也有两个端,但是这两个端是输入输出均可的:

  这个队列有的好处很多,首先他每个段都可以出也可以出,如果只是用一个端出另一个端入,那么他的作用就和队列是一样的,如果是只用一个端输入输出,那么他又和栈的作用是一样的。

PHP实现双端队列


class Deque
{
  public $queue = array();
  /**(尾部)入队 **/
  public function addLast($value)
  {
    return array_push($this->queue,$value);
  }
  /**(尾部)出队**/
  public function removeLast()
  {
    return array_pop($this->queue);
  }
  /**(头部)入队**/
  public function addFirst($value)
  {
    return array_unshift($this->queue,$value);
  }
  /**(头部)出队**/
  public function removeFirst()
  {
    return array_shift($this->queue);
  }
  /**清空队列**/
  public function makeEmpty()
  {
    unset($this->queue);
  }
  /**获取列头**/
  public function getFirst()
  {
    return reset($this->queue);
  }
  /** 获取列尾 **/
  public function getLast()
  {
    return end($this->queue);
  }
  /** 获取长度 **/
  public function getLength()
  {
    return count($this->queue);
  }
}

实际使用中,还可以有输出受限的双向队列(即一个端点允许插入和删除,另一个端点只允许插入的双向队列)和输入受限的双向队列(即一个端点允许插入和删除,另一个端点只允许删除的双向队列)。而如果限定双向队列从某个端点插入的元素只能从该端点删除,则该双向队列就蜕变为两个栈底相邻的栈了。

用途:

队列可以很好地异步处理数据传送存储,当频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取队列来异步插入。另外,还可将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,如FLV视频转换、发送手机短信、发送电子邮件等。

发布了10 篇原创文章 · 获赞 1 · 访问量 5232

猜你喜欢

转载自blog.csdn.net/qq_27702329/article/details/104841154