分享一个php队列类
简单分析一个php实现的队列管理,可用于序列任务执行等等。<?php
class phpQueue
{
protected $front;//队头
protected $rear;//队尾
protected $queue = [
'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()
{
echo "当前队首:".$this->queue[$this->front]."<br>";
}
//入队
public function InQ($data)
{
if ($this->QIsFull()) {
echo $data . ":我一来咋就满了!(队满不能入队,请等待!)<br>";
} else {
$this->front++;
for ($i = $this->front; $i > $this->rear; $i--) {
if ($this->queue[$i]) {
unset($this->queue[$i]);
}
$this->queue[$i] = $this->queue[$i - 1];
}
$this->queue[$this->rear + 1] = $data;
echo $data . '入队成功!<br>';
}
}
//出队
public function OutQ()
{
if ($this->QIsEmpty()) {
echo "队空不能出队!<br>";
} else {
echo $this->queue[$this->front]."出队成功!<br>";
unset($this->queue[$this->front]);
$this->front--;
}
}
}
$q = new queue(3);
$q->InQ("路人A");
$q->InQ('路人B');
$q->InQ('路人C');
$q->getFrontDate();
$q->InQ('路人D');
$q->OutQ();
$q->InQ("路人E");
$q->OutQ();
$q->OutQ();
$q->OutQ();
$q->OutQ();上述代码的运行结果如下:
路人A成功!
路人B入队成功!
路人C入队成功!
当前队首:路人A
路人D:我一来咋就满了!(队满不能入队,请等待!)
路人A出队成功!
路人D入队成功!
路人B出队成功!
路人C出队成功!
路人D出队成功!
队空不能出队!
豆腐干士大夫 还不错觅风论坛欢迎你 看看看看看看看看看看看看 支持你们一下下哈 抢楼了,前排第一次啊 我要下载试试,我要下载试试... 66666666666666666666 嘻嘻不错支持一个 学习了,这就去试试