PHP双向队列,双端队列代码
2018-07-20 来源:open-open
<?php
/**
* User: jifei
* Date: 2013-07-30
* Time: 23:12
*/
/**
* PHP实现双向队列,双端队列
* 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。
* 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。
*/
class Deque
{
public $queue=array();
/**
* 构造函数初始化队列
*/
public function __construct($queue=array())
{
if(is_array($queue))
{
$this->queue=$queue;
}
}
/**
* 获取第一个元素
*/
public function front()
{
return reset($this->queue);
}
/**
* 获取最后一个元素
*/
public function back()
{
return end($this->queue);
}
/**
* 判断是否为空
*/
public function is_empty()
{
return empty($this->queue);
}
/**
* 队列大小
*/
public function size()
{
return count($this->queue);
}
/**
* 插入到尾
*/
public function push_back($val)
{
array_push($this->queue,$val);
}
/**
* 插入到头
*/
public function push_front($val)
{
array_unshift($this->queue,$val);
}
/**
* 移除最后一个元素
*/
public function pop_back()
{
return array_pop($this->queue);
}
/**
* 移除第一个元素
*/
public function pop_front()
{
return array_shift($this->queue);
}
/**
* 清空队列
*/
public function clear()
{
$this->queue=array();
}
}
//初始化一个双向队列
$deque=new Deque(array(1,2,3,4,5));
echo $deque->size().PHP_EOL;
echo $deque->is_empty().PHP_EOL;
echo $deque->front().PHP_EOL;
echo $deque->back().PHP_EOL;
echo PHP_EOL;
//弹出元素测试
echo $deque->pop_back().PHP_EOL;
echo $deque->pop_front().PHP_EOL;
echo $deque->size().PHP_EOL;
echo PHP_EOL;
$deque->push_back('a').PHP_EOL;
$deque->push_front(0).PHP_EOL;
echo PHP_EOL;
//插入测试
echo $deque->front().PHP_EOL;
echo $deque->back().PHP_EOL;
echo $deque->size().PHP_EOL;
echo PHP_EOL;
//清空测试
$deque->clear();
echo $deque->is_empty();
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐