PHP队列的实现 算法
<?php
/**
* php队列算法
*
* Create On 2010-6-4
* Author Been
* QQ:281443751
* Email:binbin1129@126.com
**/
class data {
//数据
private $data; public function __construct($data){
$this->data=$data;
echo $data.":哥进队了!<br>";
} public function getData(){
return $this->data;
}
public function __destruct(){
echo $this->data.":哥走了!<br>";
}
}
class queue{
protected $front;//队头
protected $rear;//队尾
protected $queue=array('0'=>'队尾');//存储队列
protected $maxsize;//最大数 public function __construct($size){
$this->initQ($size);
}
//初始化队列
private function initQ($size){
$this->front=0;
$this->rear=0;
$this->maxsize=$size;
}
//判断队空
public function QIsEmpty(){
return $this->front==$this->rear;
}
//判断队满
public function QIsFull(){
return ($this->front-$this->rear)==$this->maxsize;
}
//获取队首数据
public function getFrontDate(){
return $this->queue[$this->front]->getData();
}
//入队
public function InQ($data){
if($this->QIsFull())echo $data.":我一来咋就满了!(队满不能入队,请等待!)<br>";
else {
$this->front++;
for($i=$this->front;$i>$this->rear;$i--){
//echo $data;
if($this->queue[$i])unset($this->queue[$i]);
$this->queue[$i]=$this->queue[$i-1];
}
$this->queue[$this->rear+1]=new data($data);
//print_r($this->queue);
//echo $this->front;
echo '入队成功!<br>';
}
}
//出队
public function OutQ(){
if($this->QIsEmpty())echo "队空不能出队!<br>";
else{
unset($this->queue[$this->front]);
$this->front--;
//print_r($this->queue);
//echo $this->front;
echo "出队成功!<br>";
}
}
}
$q=new queue(3);
$q->InQ("小苗");
$q->InQ('马帅');
$q->InQ('溜冰');
$q->InQ('张世佳');
$q->OutQ();
$q->InQ("周瑞晓");
$q->OutQ();
$q->OutQ();
$q->OutQ();
$q->OutQ();
PHP队列的实现 算法的更多相关文章
- C# 遍历文件夹非递归实现(采用队列的广度优先算法)(转)
一.实现思路: 1. 创建一个队列(使用C# 队列类 Queue,需要使用命名空间 System.Collections.Generic): 2. 把起始文件夹名称排入队中: 3. 检查队列中是否有文 ...
- 栈和队列的基础算法学习(EPI)
今天学习的时间虽然挺多的,但是总觉效率不高.其实今天没有按照计划进行EPI题目的浏览,白天去看了其他的书籍.准备找工作可能需要的状态是一定量经典的书,偶尔温习才可.书是看不完的,知识点也是固定的.所以 ...
- 队列--数据结构与算法JavaScript描述(5)
队列 Queue 概念 队列是一种列表,但队列只能在队尾插入元,在队首删除元素. 队列是一种先进先出的数据结构,用于存储按顺序排列的数据,被用在很多地方,比如提交操作系统执行的一系列进程.打印任务池等 ...
- Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解
/* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...
- Swift 算法实战之路:栈和队列
这期的内容有点剑走偏锋,我们来讨论一下栈和队列.Swift语言中没有内设的栈和队列,很多扩展库中使用Generic Type来实现栈或是队列.笔者觉得最实用的实现方法是使用数组,本期主要内容有: 栈和 ...
- Michael-Scott非阻塞队列(lock-free)算法的C实现
Michael-Scott非阻塞队列算法,即MS-queue算法,是1 9 9 6 年由Maged . M .Michael and M. L. Scott提出的,是最为经典的并发FIFO队列上的算法 ...
- python算法-队列
一.队列的特征性: 1. 先进先出 9 8 7 6 5 4 3 2 1 0 last ...
- 数据结构和算法(Golang实现)(14)常见数据结构-栈和队列
栈和队列 一.栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序.更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完 ...
- 最小生成树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind
最小支撑树树--Prim算法,基于优先队列的Prim算法,Kruskal算法,Boruvka算法,“等价类”UnionFind 最小支撑树树 前几节中介绍的算法都是针对无权图的,本节将介绍带权图的最小 ...
随机推荐
- js的prototype(2)
1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javasc ...
- PHP5.2 $arr = [] 初始化数组出现问题
初始化数组 $arr=[] ,出现问题,使用 $arr = array() ,一切正常
- BZOJ 1001 狼抓兔子 (最小割转化成最短路)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 27715 Solved: 7134[Submit][ ...
- mdk3攻击实例
Authentication Flood,mdk3下参数为a: mdk3 mon0 a –a AP的MAC地址(BSSID) -c来对指定的频道进行攻击 -a固定bssid进行攻击 -s控制发包速率. ...
- MSF漏洞攻击练习系统 – Metasploitable2
Metasploitable2 是Metasploit团队维护的一个集成了各种漏洞弱点的Linux主机(ubuntu)镜像,方便广大黑扩跟安全人员进行MSF漏洞测试跟学习,免去搭建各种测试环境.VMw ...
- FIREDAC的TFDJSONDataSets和TFDJSONDeltas查询和提交数据
服务端代码: uses Data.FireDACJSONReflect, FireDAC.Stan.Storage, FireDAC.Stan.StorageBin, FireDAC.Stan.Sto ...
- [leetcode] 8. Maximum Depth of Binary Tree
可能是因为我是按难度顺序刷的原因,这个其实在之前的几道题里面已经写过了.题目如下: Given a binary tree, find its maximum depth. The maximum d ...
- J-Link eclipse Plug-ins install
Quicklinks If you know what this is all about and you just need the update site details: name: GNU A ...
- Creative Cloud 应用程序 | 直接下载
https://helpx.adobe.com/cn/download-install/kb/creative-cloud-apps-download.html
- Async 和 Await 的异步编程 资料汇总
使用 Async 和 Await 的异步编程 https://msdn.microsoft.com/zh-cn/library/hh191443(v=vs.120).aspx 异步程序中的控制流 ht ...