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)时间

 代码如下复制代码

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 '

';

print_r($fruit);

echo '

';

?>

结果

0

deque Object

(

[queue] => Array

(

[0] => Apple

[1] => Watermelon

)

[length] => 2

)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CIF进口货物流程图_上海关区对外承包工程货物进口报关公司【清关代理吧】

进口清关&#xff1a;退运/返修/一般贸易/对外承包工程专业、专心、专注提供服务上海港/上海海关&#xff1a;对外承包工程进口清关报关有需要看左边&#xff1a;←←←←←←←进口清关报关要注意哪些问题&#xff1a;(同行禁止抄袭及转载)首先&#xff1a;要找一家靠谱、值得…

月均数据_程序员月均薪多少,2019全国互联网行业程序员就业大数据报告

《2019全国互联网行业程序员就业大数据报告》&#xff0c;该报告针对程序员画像、专业背景、职能供需分布、城市分布特征和薪资优势等方面进行分析。作者&#xff1a;子瑜说IT下面&#xff0c;一起来看看&#xff0c;2019年1月-9月程序员的就业现状。01、程序员基础画像“程序媛…

php json 循环输出html,我要用js从json文件中取值,并输出的html页面,有个问题

json文件有多个 0.json 1.json 2.json 3.json ...现在的情况是js可以挨个读取json文件中的内容&#xff0c;但是每次读取新文件的时候之前的文件内容就没了&#xff0c;我想要加载新json文件内容时&#xff0c;保留之前的读出来的内容求大神&#xff01;&#xff01;&#xff0…

单分支 两路分支和多分支的if结构_JavaScript学习笔记(二)-- 分支结构

分支结构我们的 js 代码都是顺序执行的&#xff08;从上到下&#xff09;逻辑分支就是根据我们设定好的条件来决定要不要执行某些代码IF 条件分支结构if 语句通过一个 if 语句来决定代码执行与否a语法&#xff1a; if (条件) { 要执行的代码 }通过 () 里面的条件是否成立来决定…

php 时间格式化_3分钟短文 | PHP获取函数的代码片段,唯有反射最高效

引言为了演示上一篇我们所说的PHP中反射的应用&#xff0c;本篇接着讲反射的应用。因为其特性&#xff0c;是操作函数和方法的&#xff0c;是函数的操作者&#xff0c;类的操作者&#xff0c;所以显得格外重要。我们从一个小需求出发&#xff0c;假如有一段这样的代码&#xff…

文本解析 python 多行,关于python:基于文本的数据格式,支持多行字符串

我搜索支持多行字符串的基于文本的数据格式。JSON不允许多行字符串&#xff1a;>>> import json>>> json.dumps(dict(textfirst linesecond line)){"text":"first line\second line"}我想要的输出&#xff1a;{"text":"f…

电脑屏幕卡住了按什么都没反应_手机突然“死机”了关机也不行,怎么按都没反应,怎么办?...

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅&#xff0c;请放心关注。人有生老病死&#xff0c;手机也可能遇到死机黑屏的问题。在手机众多的“疑难杂症”中…

python中哪里用到缩进_建筑防火中各类门的总结归纳!乙级门?甲级门?都哪里用到了!...

大家在学习防火部分时&#xff0c;会遇到各种场所设置不同耐火性能的防火门&#xff0c;很杂乱的感觉&#xff0c;今天这里就好好总结一下&#xff0c;希望对大家能有帮助&#xff01;一&#xff1a;双设门1.防烟楼梯间&#xff1a;此处的防烟楼梯间分为两种&#xff1a;一种是…

linux 打开php服务器文件夹,Linux下如何查看文件和文件夹大小

《Linux下如何查看文件和文件夹大小》要点&#xff1a;本文介绍了Linux下如何查看文件和文件夹大小&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。相关主题&#xff1a;服务器配置1 Linux下查看文件和文件夹大小当磁盘大小超过标准时会有报警提示&#xff0c…

android media apex_APEX英雄主播即将登陆时代广场?人气十强介绍!

5月6日&#xff0c;在经过14天短暂而激烈的战斗后&#xff0c;由小葫芦星球联合海外fanx基金会共同举办的APEX英雄篇主播C位战「人气主播榜」率先顺利收官。而在明天即5月8日中午12点将准时开启本次APEX英雄篇主播C位战支线——「潜力主播榜」&#xff0c;前三强选手也同样能够…

linux php 执行python,Linux(Ubuntu)下php使用exec调用python程序返回json数据

问题起因&#xff1a;解决乱码问题&#xff0c;及解决PHP调用python外部程序的权限问题数据中带有中文,数据来自python读取微软数据库mssql2005 server的数据操作注意事项主要有两点&#xff1a;1.python返回的编码必须为utf-8(1) 必须导入codecs模块&#xff0c;操作代码如…

实时获取滚动条的高度_适用于星上快速处理的雷达高度计有效波高反演技术

卫星雷达高度计的主要观测参数之一为有效波高&#xff0c;数据产品中其数值的确定通过波形重跟踪来实现(Retracking)&#xff0c;波形重跟踪的实现主要通过最大似然迭代完成&#xff0c;其主要的反演公示为W(t) PFS(t)*qs(t)*sr(t)。式中包括&#xff1a;高度计海面回波由平坦…

基于python的modbus协议编程_通往未来的网络可编程之路:Netconf协议与YANG Model

近年来&#xff0c;随着全球云计算领域的不断发展与业务的不断增长&#xff0c;促使网络技术也不断发展&#xff0c;SDN技术应运而生&#xff0c;从最初的基于Openflow的转发与控制分离的核心思想&#xff0c;人们不断的去扩展SDN的外延&#xff0c;目前&#xff0c;人们可以达…

php new static 效率,PHP中new static()与new self()的比较

今天在coding的时候&#xff0c;发现了 new static(),觉得实例化的地方不是应该是 new self()吗&#xff1f;查询了一下才知道两者的区别&#xff1a;1)在有子类集成的时候&#xff0c;两者的表现不一样2)php 5.2及以下的版本不支持 new static()的语法简单通俗的来说, self就是…

mfc color 亮度_双十一4K投影仪怎么选?小心别掉“亮度坑” - 电视

导读&#xff1a;  不少影音爱好者计划在双十一期间购入4K投影仪&#xff0c;组建家庭影院、升级视觉享受&#xff0c;却因为选购产品亮度不足&#xff0c;让期待落空&#xff0c;还耗费时间、精力。投影仪亮度不足&#xff0c;画面看起来像是蒙上一层纱&#xff0c;不清晰&a…

oracle归档模式备份恢复,oracle归档模式备份恢复

Oracle归档模式1Oracle归档模式设置1.1以系统管理员身份登录sqlplus /nologSQL>connect sys/oracle as sysdba;Connected.1.2检查当前数据库是否为归档模式SQL> archive log list;Database log mode No Archive ModeAutomatic archival DisabledArchive destination USE_…

dosbox edit.exe 如何使用_宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7...

宅家里一个月&#xff0c;“闭关修炼”的你是不是正在为金三银四跳槽季发愁呢&#xff1f;小编今天说的这富含的15个互联网大厂Java高级工程师核心面试问题整理&#xff01;内容包括&#xff1a;kafka面试题及解析18道ZooKeeper面试题及解析28道Linux 面试真题及解析45道MySQL面…

3三星闪存刷梅林_三星电子副会长李在镕造访西安

5月18日&#xff0c;陕西省委书记胡和平、省长刘国中在西安会见了三星电子副会长李在镕。Source&#xff1a;陕西日报胡和平表示&#xff0c;当前&#xff0c;陕西疫情防控取得阶段性重要成果&#xff0c;经济社会秩序加快恢复&#xff0c;包括三星在内的外资企业保持良好运行态…

stata中介效应的sobel检验_SPSS进行中介效应检验的实战操作与分析——杏花开生物医药统计...

中介变量( Mediator) 是一个重要的统计概念&#xff0c;如果自变量X通过某一变量M对因变量Y产生一定影响&#xff0c;则称M为X和Y的中介变量。研究中介作用的目的是在已知X和Y关系的基础上&#xff0c;探索产生这个关系的内部作用机制。在这个过程中可以把原有的关于同一现象的…

oracle复制一个表的结构图,Oracle复制表结构

Oracle复制表结构如下&#xff0c;表a是数据库中已经存在的表&#xff0c;b是准备根据表a进行复制创建的表&#xff1a;1、只复制表结构的sqlcreate table b as select * from a where 1<>12、即复制表结构又复制表中数据的sqlcreate table b as select * from a3、复制表…