PHP实现一个双向队列例子
发布:smiling 来源: PHP粉丝网 添加日期:2014-06-08 23:31:44 浏览: 评论:0
deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构,双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行,双向队列(双端队列)就像是一个队列,但是你可以在任何一端添加或移除元素.
双端队列(deque)是由一些项的表组成的数据结构,对该数据结构可以进行下列操作:
push(D,X) 将项X 插入到双端队列D的前端
pop(D) 从双端队列D中删除前端项并将其返回
inject(D,X) 将项X插入到双端队列D的尾端
eject(D) 从双端队列D中删除尾端项并将其返回
PHP实现代码如下:
- <?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);
- }
- }
例子,编写支持双端队伍的例程,每种操作均花费O(1)时间,代码如下:
- <?php
- class deque
- {
- public $queue = array();
- public $length = 0;
- public function frontAdd($node){
- array_unshift($this->queue,$node);
- $this->countqueue();
- }
- public function frontRemove(){
- $node = array_shift($this->queue);
- $this->countqueue();
- return $node;
- }
- public function rearAdd($node){
- array_push($this->queue,$node);
- $this->countqueue();
- }
- public function rearRemove(){
- $node = array_pop($this->queue);
- $this->countqueue();
- return $node;
- }
- public function countqueue(){
- $this->length = count($this->queue);
- }
- }
- $fruit = new deque();
- echo $fruit -> length;
- $fruit -> frontAdd("Apple");
- $fruit -> rearAdd("Watermelon");
- echo '<pre>';
- print_r($fruit);
- echo '</pre>';
- ?>
- /*结果
- 0
- deque Object
- (
- [queue] => Array
- (
- [0] => Apple
- [1] => Watermelon
- )
- [length] => 2
- )*/
Tags: 队列 双向 例子
- 上一篇:php怎么开启ssl?开启ssl的方法
- 下一篇:PHP连接Memcache程序代码
相关文章
- ·memcache构建简单的内存消息队列(2014-08-27)
- ·PHP memcache实现消息队列实例(2014-08-27)
- ·使用PHP访问RabbitMQ消息队列的方法示例(2018-06-11)
- ·源码分析 Laravel 重复执行同一个队列任务的原因(2018-10-10)
- ·PHP和RabbitMQ实现消息队列的完整代码(2020-02-04)
- ·如何用PHP实现队列算法(2020-03-30)
- ·Beanstalkd消息/任务队列的详解(2020-04-14)
- ·PHP+memcache实现消息队列案例分享(2021-01-10)
- ·PHP队列用法实例(2021-04-24)
- ·PHP消息队列用法实例分析(2021-07-09)
- ·php 数据结构之链表队列(2021-08-12)
- ·PHP+Redis 消息队列 实现高并发下注册人数统计的实例(2021-09-01)
- ·php+redis消息队列实现抢购功能(2021-09-03)
- ·PHP+MySQL实现消息队列的方法分析(2021-09-17)
- ·php基于Redis消息队列实现的消息推送的方法(2021-11-02)
- ·详解PHP队列的实现(2021-11-12)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)