php实现一个双向队列,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();

HDU-6375-度度熊学队列-双端队列deque/list

度度熊正在学习双端队列,他对其翻转和合并产生了很大的兴趣. 初始时有 NN 个空的双端队列(编号为 11 到 NN ),你要支持度度熊的 QQ 次操作. ①11 uu ww valval 在编号为 u ...

用python实现栈/队列/双端队列/链表

栈是元素的有序集合,添加操作与移除操作都发生在其顶端,先进后出栈操作:创建空栈,增删(顶端),查(顶端元素,元素个数,是否为空)应用:将十进制数转换成任意进制数 class Stack: # 用列表创 ...

计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和

程序设计:蒜厂年会 问答问题反馈 只看题面 16.79% 1000ms 262144K   在蒜厂年会上有一个抽奖,在一个环形的桌子上,有 nn 个纸团,每个纸团上写一个数字,表示你可以获得多少蒜币. ...

python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列

版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/36201499 标准库:一些最爱 集合.堆和双端队 ...

C++泛化双端队列

循环双端队列 双端队列可以在队首和队尾进行入队操作.出队操作的特殊队列. 循环双端队列是充分利用空间,使用格外的数据存储队头和队尾,这里利用数组进行实现. 循环双端队列(CircleQueue.h) ...

双端队列篇deque SDUT OJ 双向队列

双向队列 Time Limit: 1000MS Memory limit: 65536K 题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首:两头都可以做出队,入队的操 ...

【Leetcode堆和双端队列】滑动窗口最大值(239)

题目 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 示例: 输入 ...

lintcode二叉树的锯齿形层次遍历 (双端队列)

题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/ 二叉树的锯齿形层次遍历 给出 ...

STL---deque(双端队列)

Deque是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结 ...

随机推荐

Ubuntu ( Linux) Eclipse 乱码问题

刚装完Ubuntu,导入Java和Android项目时,发现字符乱码,究其原因,是由于Windows下使用的是GBK编码,而Ubuntu使用的是UTF-8编码.网上查找了相关资料,主要解决方案有两种. ...

(转) CCTextFieldTTF输入框

CCTextFieldTTF输入框 分类: cocos2d-x 2013-04-08 16:32 2964人阅读 评论(1) 收藏 举报 新建工程,testInput 修改HelloWorldScen ...

[麦先生]学习PDO循序渐进使用方式

使用方式  特点一:支持跨数据库 1:首先实例化PDO,创建PDO对象的四个必备参数:host(哪一种类型的数据库,mysql/orcal/SQLserver等);dbname(数据库的名称);cha ...

How to run a terminal inside of vim?

[How to run a terminal inside of vim?] :sh turn vim into shell mode d+trl back to vim 参考:http://stac ...

PHP练习题(二)

程序6.题目: 假设某人有100,000现金,每经过一次路口需要进行一次交费交费规则为当他现金大于50,000时每次需要交%5,如果现金小于等于50,000时每次交5,000.问此人可以经过多少次这个 ...

2016-5-19模拟测试 bzoj3652 bzoj3653 bzoj3654

T1 description 给定正整数\(n\),定义\(f(x) = \max{y \ \mathrm{xor}\ x}(y

子元素div高度不确定时父div高度如何自适应

粘自:http://www.jb51.net/css/110652.html 在最外层div加以下样式 height:100%; overflow:hidden; 其它方法: Div即父容器不根据内容 ...

C++ 动态绑定

1.为每一个包含虚函数的类设置一个虚表(VTABLE) 每当创建一个包含有虚函数的类或从包含虚函数的类派生一个类时,编译器就会为这个类创建一个VTABLE.在VTABLE中,编译器放置了这个类中,或者 ...

查看oracle数据库的连接数以及用户

查看oracle数据库的连接数以及用户 11.查询oracle的连接数2select count(*) from v$session;32.查询oracle的并发连接数4select count(*) ...

适用于SQl数据的Sql语句

---基础知识if exists(select * from sysdatabases where name='Exam') ---判断数据库中是否存在该数据库drop database Examgo ...

你可能感兴趣的:(php实现一个双向队列)