php 循环队列,队列和循环队列-php数组

//实现基本队列

class Queues

{

private $head;

private $tail;

private $cnt; //数组大小

private $array = [];

public function __construct($n = 5)

{

$this->cnt = $n;

$this->head = 0;

$this->tail = 0;

}

//数组实现队列

public function basisEnQueue($val)

{

//队列已满

if ($this->tail == $this->cnt) {

return false;

}

$this->array[$this->tail] = $val;

$this->tail++;

return true;

}

//出队列

public function basisDelQueue()

{

//队列为空

if ($this->head == $this->tail) {

return false;

}

$ret = $this->array[$this->head];

unset($this->array[$this->head]);

$this->head++;

return $ret;

}

//队列迁移 使用已删除空间

public function migrationEnQueue($val)

{

//队列已满

if ($this->tail == $this->cnt) {

//tail ==n && head==0,表示整个队列都占满了

if ($this->head == 0) {

return false;

}

for ($i = $this->head; $i < $this->tail; $i++) {

$this->array[$i - $this->head] = $this->array[$i];

unset($this->array[$i]);

}

$this->tail = $this->tail - $this->head;

$this->head = 0;

}

$this->array[$this->tail] = $val;

$this->tail++;

return true;

}

}

$q = new Queues();

$q->basisEnQueue('a');

$q->basisEnQueue('b');

$q->basisEnQueue('c');

$q->basisEnQueue('d');

$q->basisEnQueue('f');

$r1 = $q->basisDelQueue();

$r2 = $q->basisDelQueue();

// $q->migrationEnQueue('g');

// var_dump($q);exit;

//循环队列

class CircularQueue

{

private $head;

private $tail;

private $cnt; //数组大小

private $array = [];

public function __construct($n = 5)

{

$this->cnt = $n;

$this->head = 0;

$this->tail = 0;

}

public function enqueue($val)

{

//(tail+1)%n=head 队列满的时候

if (($this->tail + 1) % $this->cnt == $this->head) {

return false;

}

$this->array[$this->tail] = $val;

$this->tail = ($this->tail + 1) % $this->cnt;

return true;

}

public function dequeue()

{

//如果head == tail 表示队列为空

if ($this->head == $this->tali) {

return false;

}

$ret = $this->array[$this->head];

unset($this->array[$this->head]);

$this->head = ($this->head + 1) % $this->cnt;

return $ret;

}

}

$c = new CircularQueue;

$c->enqueue('a');

$c->enqueue('b');

$c->enqueue('c');

var_dump($c);exit;

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

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

相关文章

I2C和SPI注定要打一架

最近微信群里好几天聊到I2C&#xff0c;既然说到了I2C&#xff0c;那就有必要说SPI&#xff0c;那就一起说了算了&#xff0c;大家有更好见解的&#xff0c;留言回复下&#xff0c;让更多的人知道你的观点。整理与网络&#xff0c;侵删I2C和SPI应该要打一架&#xff1f;现今&am…

python opencv创建图像_OpenCV-Python 展示图像(1)

可以用 cv.imshow(winName, imgMat) 函数在窗口中显示图像。窗口大小会随着图像大小自动调整。 第一个参数是字符串类型&#xff0c;表示窗口名称&#xff0c;可以用不同的窗口名称来创建多个窗口。 第二个参数是要显示的图像数据。 cv.imshow(tmp_window, img) cv.waitKey(0) …

第1章 ssh命令和SSH服务详解

基础服务类系列文章&#xff1a;http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文对SSH连接验证机制进行了非常详细的分析&#xff0c;还详细介绍了ssh客户端工具的各种功能&#xff0c;相信能让各位对ssh有个全方位较透彻的了解&#xff0c;而不是仅仅只会用它来连接远…

漫画:什么是区块链?

两年前&#xff0c;小灰以前写过一期关于区块链的漫画&#xff0c;可能很多新来的小伙伴还没有看过。最近趁着区块链重新成为热门话题&#xff0c;小灰把这篇漫画稍作修改&#xff0c;再次推送给大家。什么是区块链&#xff1f;区块链&#xff0c;英文 Blockchain&#xff0c;本…

php外卖系统源码单店,网上订餐系统 v3.1 单店版

系统以简单实用为主&#xff0c;系统的每一个功能都是实用的&#xff0c;像以很多网站为了好看把页面填的满满的&#xff0c;用户进来不知从何处操作起&#xff0c;我们的系统&#xff0c;一切了为了用户&#xff0c;为了网站经营者。我们所做的不仅仅是一个店铺展示系统&#…

python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!

菜鸟进阶高手&#xff0c;需要内外的修炼&#xff0c;外练招式&#xff0c;内修心法。招式有很多比如基本的函数&#xff0c;类&#xff0c;文件&#xff0c;模块&#xff0c;到并发&#xff0c;数据库的使用&#xff0c;再到一些框架的使用无论是爬虫的西瓜皮框架&#xff0c;…

web容器(02):tomcat配置监控

1、tomcat的目录结构 tomcat一般给Java应用的&#xff0c;apache一般给php应用的 bin文件夹(启动文件)&#xff1a; 配置监听之类的内容是在catalina.sh中加 conf文件夹(配置文件)&#xff1a; 2、server.xml配置文件说明 <Server port"8005" shutdown"SHUTD…

一般一个前端项目完成需要多久_制作分销小程序最快要多久

小猪V5分销小程序小编了解到&#xff0c;微商城及微分销搭建成为当下热门话题&#xff0c;下面从多个方面来谈谈快速制作电商小程序最快要多久。微信为小程序开放了超过60多个入口&#xff0c;比如有微信群聊入口、微信聊天主界面下拉、App分享信息卡片、发现栏小程序主入口、发…

apache php的日志在哪里,PHP在哪里存储错误日志? (php5,apache,fastcgi,cpanel)...

我在共享主机上&#xff0c;并由fastcgi运行Cpanel&#xff0c;Apache&#xff0c;PHP。 PHP在哪里存储错误日志&#xff1f;还有什么其他方法可以在共享主机环境中找到错误日志&#xff0c;而不必遍历整个站点结构来查找error_log文件&#xff1f;我可以访问php.ini (我使用的…

那些有趣的电子漫画合集

素材来源&#xff1a;芯片之家同事调电路连续通宵两个晚上&#xff0c;结果。。。坐着我的芯片靠椅&#xff0c;剪个帅帅的光头。更多电子漫画合集&#xff1a;转自&#xff1a;长按识别图中二维码关注—————END—————扫码或长按关注回复「加群」进入技术群聊

vim 常用快捷键总结

键盘移动 (Move) 一切都从键盘的移动k -> 上 upj -> 下 downh -> 左 leftl -> 右 rightz -> 重画屏幕&#xff0c;当前光标变成屏幕的第一行 (redraw current line at top of window)CTRL-f -> 跳到下一页 (page down)CTRL-b -> 跳到上一页 (page up) 跳跃…

vim nerdtree 标签_7款vim插件

作者&#xff1a;QvQ链接&#xff1a;https://zhuanlan.zhihu.com/p/145793963来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。集成开发环境&#xff08;IDE&#xff0c;Integrated Development Environment &#xff09…

单片机怎么学?

—————END—————扫码或长按关注回复「 加群 」进入技术群聊

php中goto另一个页面,php中goto操作符的详细介绍

php goto操作符可以用来跳转到程序的另一个位置。该位置可以用目标名称加冒号来标记&#xff0c;而跳转指令是在goto之后接上目标的位置标记对已goto操作符使用的一些限制目标位置只能位于同一个文件和作用域无法“跳出”一个函数和一个类的方法无法“跳入”到另一个函数无法“…

tableau linux无网络安装_四十二、Linux网络管理,软件安装,进程管理总结

「Author&#xff1a; Runsen」1、⽹络管理1.1 网络状态查看在Linux中经常使用ifconfig&#xff0c;route和netstat查看网络状态&#xff0c;它们就是. net-tools工具&#xff0c;下面我来使用下。我就说下ifconfig和route在我们的linux中有很多网卡接口&#xff0c;比如eth0第…

C语言,环形队列

什么是环形队列&#xff1f;环形缓冲区是一个非常典型的数据结构&#xff0c;这种数据结构符合生产者&#xff0c;消费者模型&#xff0c;可以理解它是一个水坑&#xff0c;生产者不断的往里面灌水&#xff0c;消费者就不断的从里面取出水。那就可能会有人问&#xff0c;既然需…

php print r用法,php中echo(),print(),print_r()用法

从我对echo(),print(),print_r()这个函数的理解是echo可输入字符串变量常量&#xff0c;print与echo差不多,但print_r可以打印数组而前两者是不可以的,下面我来详细介绍它们三个的用法与区别吧。echo是PHP语句,print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用…

音频几个重要的参数

音频的采样率是什么&#xff1f;如果把音频当成一条曲线&#xff0c;那么采样率就是一秒钟从这个曲线里面提取样本的次数。8,000 Hz - 电话所用采样率, 对于人的说话已经足够11,025 Hz - AM调幅广播所用采样率22,050 Hz和24,000 Hz - FM调频广播所用采样率32,000 Hz - miniDV 数…

servlet中web.xml配置详解

Web.xml常用元素 <web-app> <display-name></display-name> 定义了WEB应用的名字 <description></description> 声明WEB应用的描述信息 <context-param></context-param> context-param元素声明应用范围内的初始化参数。 <fi…

ps绿化工具_绿化消防车价位

绿化消防车价位绿化消防车价位 4吨东风消防洒水车&#xff0c;又称为多功能消防车&#xff0c;它是在东风原装二类底盘基础上加消防泵、消防炮、洒水炮及洒水车的前冲后洒、侧喷及水罐体组成&#xff0c;既能参加救火灭火功能&#xff0c;水炮的有效射程≥45米&#xff0c;每秒…