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;
php 循环队列,队列和循环队列-php数组相关推荐
- 循环队列,定义循环队列长度为10,编写初始化队列、入队、出队、求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能。
循环队列,定义循环队列长度为10,编写初始化队列.入队.出队.求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能. #include< ...
- JavaScript的调用栈、回调队列和事件循环
译者按 这篇文章可以看做是对Philip Roberts 2014年在JSConf演讲的<What the heck is the event loop anyway?>的一个总结. 建议 ...
- 《恋上数据结构第1季》队列、双端队列、循环队列、循环双端队列
队列(Queue) 队列 Queue 队列的接口设计 队列源码 双端队列 Deque 双端队列接口设计 双端队列源码 循环队列 Circle Queue 循环队列实现 索引映射封装 循环队列 – %运 ...
- java循环队列_Java版-数据结构-队列(循环队列)
前情回顾 在上一篇,笔者给大家介绍了数组队列,并且在文末提出了数组队列实现上的劣势,以及带来的性能问题(因为数组队列,在出队的时候,我们往往要将数组中的元素往前挪动一个位置,这个动作的时间复杂度O(n ...
- java循环遍历队列_java实现循环队列
java实现循环队列 循环队列的优点 普通队列出队操作开销大:在出队操作时,索引为0后面的所有元素,都需要往前移动一位,元素越多,消耗的时间也越多,时间复杂度为O(N). 循环队列的逻辑: 1.当元素 ...
- 数据结构_队列:从普通队列到循环(circular)队列
队列:从普通队列到循环队列 队列的定义: 队列(queue)是允许在一端进行插入操作,在另一端进行删除操作的线性表.允许插入的一端称为队尾(rear),允许删除的一端称为队头(front).插入操作称 ...
- Java中循环队列实现_Java循环队列的实现方法
Java循环队列的实现方法 时间:2017-09-13 来源:华清远见JAVA学院 生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题.那 ...
- 【数据结构】栈和队列OJ练习(栈和队列相互实现+循环队列实现)
目录 前言 1.用队列实现栈 2.用栈实现队列 3.循环队列 前言 前面在学习了栈和队列的实现之后,相信大家对栈和队列的结构和使用方式都有了一些理解. 下面我们就来进行一些练习,这这章的练习相对于原来 ...
- c语言建立队列(顺序队列、循化队列和链式队列)
c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...
- Python数据结构学习笔记——队列和双端队列
目录 一.队列的定义 二.队列 实现步骤分析 三.队列的Python实现代码 四.队列的应用 六人传土豆游戏 五.双端队列的定义 六.双端队列 实现步骤分析 七.双端队列的Python实现代码 八.双 ...
最新文章
- 苹果新功能惹众怒,4000 多家组织和个人签署公开信,敦促苹果放弃“儿童安全”功能...
- 【读书笔记】《第一行代码》
- 敏捷项目向组合级看齐
- 深入理解spark两种调度模式:FIFO,FAIR模式
- elementui el-table根据分页显示表格序号
- 微信小程序之获取验证码js
- Pytorch基础(九)——损失函数
- linux设备驱动之按键外部中断
- python tcp多个客户端连接服务器
- AcWing479.加分二叉树(区间DP)题解
- Win32程序和控制台应用程序的项目互转设置
- 为什么年龄大了近视还增加_都是做近视手术,为什么价格区别这么大?
- 软件著作权人享有的权利
- 雪亮工程整体解决方案
- 标题中冒号的用法_如果论文题目中出现冒号,冒号前后两部分内容通常是?
- 计算机缺少什么无法正常启动,电脑无法正常启动
- 车牌限行C语言雾霾指数,算法设计与程序实现判断车牌的单双号(背景知识)为了保障空气质量,减少雾霾,某市决定当空气污染严重时,实行汽车单双号限行,违反规定的车辆将予以处罚。如何让高清摄像-组卷网...
- Linux如何修改网卡ip地址!
- 华为HCNA实验操作之常用操作命令32-40
- 用Arduino播放音乐
热门文章
- 利用PUT方式上传文件的方法研究
- android 获取sd卡目录失败_树莓派对SD卡的大小,速度有哪些要求?
- 【python】数据结构和算法 + 浅谈单链表与双链表的区别
- 查看centos中的用户和用户组
- wireshark 十六进制过滤_CTF流量分析之wireshark使用
- iphone查看删除的短信_iPhone12发布!刚买的苹果手机短信全部消失了怎么办?
- android java adb命令大全,Android adb命令备份恢复手机信息
- rabbitmq 安装 linux
- 三大类sql语句——该记录是本人以前微博上的文章
- Apache 配置:是否显示文件列表