马上注册,结交更多易友,享用更多功能,让你轻松玩转觅风论坛。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
简单分析一个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出队成功!
- 队空不能出队!
复制代码
|
|