punycode 发表于 2023-8-10 16:34:04

分享一个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出队成功!
队空不能出队!

桃子 发表于 2023-8-11 15:57:20

豆腐干士大夫

企鹅6655 发表于 2023-8-12 15:20:36

还不错觅风论坛欢迎你

企鹅6655 发表于 2023-8-13 14:43:52

看看看看看看看看看看看看

桃子 发表于 2023-8-14 14:07:09

支持你们一下下哈

好萌哦 发表于 2023-8-15 13:30:25

抢楼了,前排第一次啊

阿运 发表于 2023-8-15 18:14:50

我要下载试试,我要下载试试...

无敌少爷 发表于 2023-8-15 22:59:15

66666666666666666666

徐少 发表于 2023-8-16 03:43:40

嘻嘻不错支持一个

1225061801 发表于 2023-8-16 08:28:05

学习了,这就去试试
页: [1] 2 3 4 5 6
查看完整版本: 分享一个php队列类