在本篇文章里小编给大家整理的是一篇关于php双向队列如何理解的相关内容及实例,需要的朋友们可以跟着学习下。
1、双向队列是指一种具有队列和栈的性质的数据结构。
2、双向队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
双向队列就像是一个队列,但是你可以在任何一端添加或移除元素。
实例
<?php
class DoubleQueue
{
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);
}
}
实例扩展:
(deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双向队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。
在实际使用中,还可以有输出受限的双向队列(即一个端点允许插入和删除,另一个端点只允许插入的双向队列)和输入受限的双向队列(即一个端点允许插入和删除,另一个端点只允许删除的双向队列)。而如果限定双向队列从某个端点插入的元素只能从该端点删除,则该双向队列就蜕变为两个栈底相邻的栈了。http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E5%BC%80%E6%88%B7--%E5%BE%AE%E4%BF%A1kka9333
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E4%B8%AD%E5%BF%83--%E5%BE%AE%E4%BF%A1kka9333
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%9C%A8%E7%BA%BF%E5%AE%A2%E6%9C%8D--%E5%BE%AE%E4%BF%A1kka9333
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%AC%E5%8F%B8%E5%AE%A2%E6%9C%8D%E7%94%B5%E8%AF%9D--%E5%BE%AE%E4%BF%A1kka9333
http://www.hnxxrsj.gov.cn/Error.aspx?msg=%E6%96%B0%E7%99%BE%E8%83%9C%E5%85%