PHP实现队列及队列原理 看完觉得好简单
队列是一种线性表,按照先进先出的原则进行的:
PHP实现队列原理看看各语言实现队列的方法:
各语言实现队列的方法PHP实现队列:第一个元素作为队头,最后一个元素作为队尾
<?php
/**
* 队列就是这么简单
* @link http://www-bingmang-net.yd-uv.com
*/
$array = array('PHP', 'JAVA');
array_push($array, 'PYTHON'); //入队列
array_shift($array); //出队列
什么是双端队列(或双向队列)Deque,全名double-ended queue?
即元素可以在队列的任意一段入队或出队,如果我们把这些方法叫做insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端队列功能就和栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和队列一样了。双端队列与栈或队列相比,是一种多用途的数据结构。
PHP实现双端队列:
<?php
class Deque {
public $queue = array();
/**(尾部)入队 **/
public function addLast($value) {
return array_push($this->queue, $value); //返回处理之后数组的元素个数
}
/**(尾部)出队**/
public function removeLast() {
return array_pop($this->queue); //返回移出的值,如果 array 为 空或不是一个数组则返回 NUL
}
/**(头部)入队**/
public function addFirst($value) {
return array_unshift($this->queue, $value); //返回处理之后数组的元素个数
}
/**(头部)出队**/
public function removeFirst() {
return array_shift($this->queue); //返回移出的值,如果 array 为 空或不是一个数组则返回 NULL
}
/**清空队列**/
public function makeEmpty() {
// unset($this->queue);
$this->queue = array();
}
/**获取列头**/
public function getFirst() {
return reset($this->queue);
}
/** 获取列尾 **/
public function getLast() {
return end($this->queue);
}
/** 获取长度 **/
public function getLength() {
return count($this->queue);
}
}
$a = new Deque();
$a->queue = array('php','python','java','linux');
echo $a->getLength();
var_dump($a->queue);