导读
易语言5.6完美版,可静态编译,绿色无后门

学习易语言 讲究的是系统,如果你正在四处闲逛,你懂的永远是皮毛! 觅风论坛正在为每个困惑的对易语言 详细

[教程] 分享一个php队列类

[复制链接]

微信扫一扫 分享朋友圈

punycode 发表于 2023-8-10 16:34:04 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

马上注册,结交更多易友,享用更多功能,让你轻松玩转觅风论坛。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
简单分析一个php实现的队列管理,可用于序列任务执行等等。

  1. <?php

  2. class phpQueue
  3. {
  4.     protected $front;//队头
  5.     protected $rear;//队尾
  6.     protected $queue = [
  7.         '0' => '队尾'
  8.     ];//存储队列
  9.     protected $maxsize;//最大数

  10.     public function __construct($size)
  11.     {
  12.         $this->initQ($size);
  13.     }

  14.     //初始化队列
  15.     private function initQ($size)
  16.     {
  17.         $this->front = 0;
  18.         $this->rear = 0;
  19.         $this->maxsize = $size;
  20.     }

  21.     //判断队空
  22.     public function QIsEmpty()
  23.     {
  24.         return $this->front === $this->rear;
  25.     }

  26.     //判断队满
  27.     public function QIsFull()
  28.     {
  29.         return ($this->front - $this->rear) === $this->maxsize;
  30.     }

  31.     //获取队首数据
  32.     public function getFrontDate()
  33.     {
  34.         echo "当前队首:".$this->queue[$this->front]."<br>";
  35.     }

  36.     //入队
  37.     public function InQ($data)
  38.     {
  39.         if ($this->QIsFull()) {
  40.             echo $data . ":我一来咋就满了!(队满不能入队,请等待!)<br>";
  41.         } else {
  42.             $this->front++;
  43.             for ($i = $this->front; $i > $this->rear; $i--) {
  44.                 if ($this->queue[$i]) {
  45.                     unset($this->queue[$i]);
  46.                 }
  47.                 $this->queue[$i] = $this->queue[$i - 1];
  48.             }
  49.             $this->queue[$this->rear + 1] = $data;
  50.             echo $data . '入队成功!<br>';
  51.         }
  52.     }

  53.     //出队
  54.     public function OutQ()
  55.     {
  56.         if ($this->QIsEmpty()) {
  57.             echo "队空不能出队!<br>";
  58.         } else {
  59.             echo $this->queue[$this->front]."出队成功!<br>";
  60.             unset($this->queue[$this->front]);
  61.             $this->front--;
  62.         }
  63.     }
  64. }

  65. $q = new queue(3);
  66. $q->InQ("路人A");
  67. $q->InQ('路人B');
  68. $q->InQ('路人C');
  69. $q->getFrontDate();
  70. $q->InQ('路人D');
  71. $q->OutQ();
  72. $q->InQ("路人E");
  73. $q->OutQ();
  74. $q->OutQ();
  75. $q->OutQ();
  76. $q->OutQ();
复制代码
上述代码的运行结果如下:
  1. 路人A成功!
  2. 路人B入队成功!
  3. 路人C入队成功!
  4. 当前队首:路人A
  5. 路人D:我一来咋就满了!(队满不能入队,请等待!)
  6. 路人A出队成功!
  7. 路人D入队成功!
  8. 路人B出队成功!
  9. 路人C出队成功!
  10. 路人D出队成功!
  11. 队空不能出队!
复制代码


回复

使用道具 举报

精彩评论55

桃子 发表于 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 | 显示全部楼层
学习了,这就去试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们:觅风论坛与你快乐分享

收藏本站

用心服务做个非盈利公益编程网站

www.eyyba.com

服务人:觅风论坛

Email:eyyba@foxmail.com

Powered by WWW.EYYBA.COM X3.4© 2001-2023 Inc.   版权所有   

觅风论坛  疆ICP备15020893号-1