php实现双向队列详解,PHP实现一个双向队列例子
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实现双向队列详解,PHP实现一个双向队列例子相关推荐
- 详解Linux内核之双向循环链表 By邪恶八进制
[转载]详解Linux内核之双向循环链表 详解Linux内核之双向循环链表 信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 摘要: 本文详解了内核中面向对象的list ...
- 转:Java 7 种阻塞队列详解
转自: Java 7 种阻塞队列详解 - 云+社区 - 腾讯云队列(Queue)是一种经常使用的集合.Queue 实际上是实现了一个先进先出(FIFO:First In First Out)的有序表. ...
- 详解Nginx SSL快速双向认证配置(脚本)
这篇文章主要介绍了详解Nginx SSL快速双向认证配置(脚本),现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 目前遇到一个项目有安全性要求,要求只有个别用户有权限访问.本着能用配置解决就 ...
- JavaScript数据结构与算法——队列详解(下)
接下来会借助本人另一篇文章JavaScript数据结构与算法--队列详解(上)中实现的队列类及其方法实现一个应用. 配对问题 需求分析:在一个文件中保存着一份男女混合的数据,名称前以B开头表示男士,以 ...
- (08)System Verilog 队列详解
(08)System Verilog 队列详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 队列详解 5)结语 1.2 FPGA简 ...
- Unicode双向算法详解(bidi算法)(二)
作者:黄邦勇帅(原名:黄勇)2019-10-17 Unicode双向算法详解(bidi算法)(二) 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C+ ...
- Unicode双向算法详解(bidi算法)(一)
Unicode双向算法详解(bidi算法)(一) 注:本文已独家授权给脚本之家(ID:jb51net)公众号发布 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是 ...
- Unicode双向算法详解(bidi算法)(三)
Unicode双向算法详解(bidi算法)(三) 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文是对<C++语法详解>一书相关章节的增补,以增强读者对 ...
- linux fq队列,QOS各种队列详解(FIFO,FQ,CBWFQ,PQ).doc
QOS各种队列详解(FIFO,FQ,CBWFQ,PQ) QOS各种队列详解(FIFO,FQ,CBWFQ,PQ) 对于拥塞管理,一般采用队列技术,使用一个队列算法对流量进行分类,之后用某种优先级别算法将 ...
最新文章
- 【mysql解决方案】ERROR 1248 (42000): Every derived table must have its own alias
- 健康很重要 程序员应该坚持正确的坐姿工作
- 汉字输入练习 TypeChinese.java
- python多线程写同一个文件_Python多线程快速写入文件,python,飞速
- 网页制作的基本语言html,网页制作基础语言HTML.ppt
- Go Web 编程--超详细的模板库应用指南
- Android中使用shape来定义控件的显示属性
- html2canvas截图地图和看到的不一样_大秦赋,我看到的不一样的赢异人。
- Spring配置补充
- roseMirrorHA5.0 for WindowsServer2008R2配合sqlserver2012|Oracle 11g的安装和配置
- C++ Primer 第5版--练习8.4
- 微信表情包 php,教你用PS给你的室友做一套动态微信豪华表情包
- 小程序开发-Step1
- 斗魔之残龙纹 第一章
- eToken 身份认证
- 用计算机公式表白,昨天,我用IF函数表白成功了!
- cocos creator周边工具开发【spine预览】小记
- 富芮坤fr8008gp lvgl遇坑和解法:卡死在lvgl定时器中;SWD接口配置;
- C++贪心算法之最小新整数
- [ 深度学习 ] 胶囊网络(Capsule)
热门文章
- 分类算法支持向量机(SVM) 简介与入门
- 2017年网易校招题 数字翻转
- python魔法函数和装饰器_python魔法方法、构造函数、序列与映射、迭代器、生成器...
- js设计一个带开关的时钟_数电题:三个按键一个灯
- java实现对大文件切割下载_Java实现大文件的切割与合并操作示例
- python+OpenCV图像处理(三)绘制简单的几何图形、显示文字
- linux模式匹配运算符,linux之正则表达式
- mysql3.51 密码修改_mysql修改密码
- python合并路径和文件名_Python实例 分割路径和文件名
- linux mongo 服务器,如何用MongoDB在Linux服务器上创建大量连接和线程的记忆