Home  >  Article  >  Backend Development  >  How to implement queue in php

How to implement queue in php

(*-*)浩
(*-*)浩Original
2019-09-27 11:56:003010browse

How to implement queue in php

There are two classes in this queue algorithm:

The first is the data class, which is the storage Data; (Recommended learning: PHP programming from entry to proficiency)

The second is the queue class, which is the queue class. This is some operations of the queue;

First of all, the queue contains four attributes:

front (the head of the queue, that is, the person who wants to go out of the queue)

rear (the tail of the queue always points to 0 here) )

queue (stores all queued data objects. There is an element in the queue by default. When empty, both front and rear point to it)

maxsize (the length of the queue)

Application instructions:

1 Initialize the queue: Generate a queue and pass in a parameter as maxsize. Initialize the queue, set rear to 0, and set front to 0. At this time, there is only element 0 rear in the queue. and front both point to him

2. Join the queue: Determine whether the queue is full (front-rear==maxsize), if full, prompt, if not full, first let front 1, and then let all elements in the queue Move one position forward (that is, give up the position at the end of the queue for the newcomer), and then generate a data object and insert it into position 1 at the end of the queue. Successfully joined the team at this time!

3. Dequeue: Determine whether the queue is empty (front==rear). If it is empty, it will prompt. If it is not empty, delete the object pointed to by front, front-1 (move one position backward), and exit. Team success!

<?php
/**
*  php队列算法
*  
*  Create On 2010-6-4
*  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(&#39;0&#39;=>&#39;队尾&#39;);//存储队列
    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 &#39;入队成功!<br>&#39;;
        }
    }
    //出队
    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(&#39;马帅&#39;);
$q->InQ(&#39;溜冰&#39;);
$q->InQ(&#39;张世佳&#39;);
$q->OutQ();
$q->InQ("周瑞晓");
$q->OutQ();
$q->OutQ();
$q->OutQ();
$q->OutQ();

The above is the detailed content of How to implement queue in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn