百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> PHP队列的实现细致操纵步骤(通俗易懂)
分享文章到:

PHP队列的实现细致操纵步骤(通俗易懂)

发布时间:09/01 来源:未知 浏览: 关键词:
队列是一种非凡的线性表,它只同意在表的前端,可以称之为front,停止删除操纵;而在表的后端,可以称之为rear停止插入操纵。队列和堆栈一样,是一种操纵受限制的线性表,和堆栈不一样之处在于:队列是遵照“先进先出”原则,而堆栈遵照的是“先进后出”原则。队列停止插入操纵的端称为队尾,停止删除操纵的称为队头,只同意在队尾停止插入操纵,在队头停止删除操纵。

队列的数据元素又称为队列元素,在队尾中插入一个元素称为入队,在队头删除一个元素称为出队。详细实现参照 代码:

代码:

<?php
/**
* php队列算法
* Author Been
* QQ:281443751
* Email:binbin1129@126.com
**/
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~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板