最新公告
  • 欢迎您访问爱上源码网,分享精品整站源码,网站模板,游戏源码,APP小程序源码以及视频教程免费下载;服务永无止境!立即加入我们
  • php实现队列的详细步骤

    爱上源码网文章php实现队列的详细步骤的内容插图

    什么是队列

    队列是一种特殊的线性表,它只允许在表的前端,可以称之为front,进行删除操作;而在表的后端,可以称之为rear进行插入操作。

    队列和堆栈一样,是一种操作受限制的线性表,和堆栈不同之处在于:队列是遵循“先进先出”原则,而堆栈遵循的是“先进后出”原则。队列进行插入操作的端称为队尾,进行删除操作的称为队头,只允许在队尾进行插入操作,在队头进行删除操作。

    队列的数据元素又称为队列元素,在队尾中插入一个元素称为入队,在队头删除一个元素称为出队。

    推荐视频教程:php视频教程

    实现代码:

    <?php
    /**
    * php队列算法
    **/
    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();

    本案例中有两个类:

    第一个是data类,用于实现数据的存放以及队列元素的入队出队情况;

    第二个是queue类,用于队列元素的一些入队出队操作。

    队列中包含四个属性:

    front(队列的头部)

    rear(队列的尾部)

    maxsize(队列的长度,即队列元素个数)

    queue(存放所有已入队队列元素的对象)

    场景说明:

    1、初始化队列时,生成一个队列,传入一个参数作为maxsize初始化队列把队尾rear设为0,队头front也设为0,此时queue中只有0号元素,并且rear和front都指向它。

    2、入队时,先需要判断队列是否已满(front-rear == maxsize),如果已满不可在插入,如果未满则允许插入。插入时,front自增,然后依次让队列所有元素向前移动一位(让出队尾位置以便插入新元素),然后生成新的data对象插入到队尾位置。

    3、出队时,判断队列是否为空(front == rear),如果为空时,无法出队。如果不为空时,删除front指向的对象,并且front自减,完成出队。

    运行结果如下:

    爱上源码网文章php实现队列的详细步骤的内容插图1

    相关文章教程推荐:php教程

    以上就是php实现队列的详细步骤的详细内容,更多请关注爱上源码网其它相关文章!

  • 微信
  • 分享
  • 相关标签:php 实现 队列 步骤
  • 本文转载于:博客园,如有侵犯,请联系916990011@qq.com删除
    • 上一篇:CentOS 下三种 PHP 拓展安装方法
    • 下一篇:Jupyter Notebook下安装PHP内核

    相关文章

    相关视频

    • php如何用队列做应用
    • php有队列概念吗
    • php 如何实现队列
    • PHP队列的实现详细操作步骤(通俗易懂)
    • php实现队列的详细步骤
    • 数组_栈方法和队列方法
    • 栈方法和队列方法
    • 栈和队列操作

    本文有爱上源码下载完入驻作者发布,如果对您版权造成侵害,可以联系本站站长管理进行维权删除,本站收到维权24小时内进行处理,谢谢您关注23ym.cn!
    本站分享大量程序员技术文章以及对编程开发的初级入门教程,包括图文讲解笔记和高清视频下载~

    重要声明:
    1.本站视频教程,软件及网站源码版权均属于原作者所有,您必须在下载后的24个小时之内,从您的电脑中删除!非法商业用途,后果自负!
    2.本站不保证所提供下载资源的安全性和完整性,仅供下载学习之用!如链接失效或资源含外站广告,请联系客服处理!给予奖励!
    3.本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!本站提供有偿服务!如有侵权请联系在线客服!
    4.如您手中有优质资源或教程,可以自助投稿发布,成功分享后有奖励和额外收入!
    5.如您需要正版微擎模块可联系本站客服,我们有价值30w+商业微擎应用出售微擎坑位和招收代理!
    6.400电话/软著/ICP,EDI许可证/商标特价办理中!
    爱上源码下载网 » php实现队列的详细步骤

    常见问题FAQ

    从网站下载的源码都有安装教程么?不会安装怎么办?
    本站发布的网站源码和模板资源大部分在压缩包内都有教程,如您不会安装可以联系本站在线技术进行付费安装。
    爱上源码的所有源码都是亲测能正常运行的么?
    本站目前拥有资源10w+,包含整站源码,网站模板,游戏源码,小程序源码,视频教程,破解软件等,每天也在测试更新;因时间和精力有限我们无法对资源进行一一测试,只能保证所分享资源内容无误,希望理解。
    我手中的优质资源可以在你这换钱或者VIP么?
    爱上源码支持投稿,欢迎发布您手中的优质资源进行售卖;本站VIP支持免费获取,目前邀请10人注册爱上源码即可免费获取VIP。
    爱上源码除了资源分享还有其他业务没?
    【价值30W+微擎模块出售正版商业微擎坑位及招收代理,详情咨询本站客服!】我们团队目前运营并推广几套商业化saas智能小程序系统能满足大部分小程序开发需求,并由SaaS和独立部署版商城小程序系统;另外销售400电话,各种ICP/EDI资质证书办理,软著和商标注册服务等。

    发表评论

    • 28会员总数(位)
    • 35644资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 543稳定运行(天)

    提供最优质的资源集合

    开通VIP 源码下载