Home >Backend Development >PHP Tutorial >How to implement PHP queue algorithm?

How to implement PHP queue algorithm?

不言
不言Original
2018-07-20 17:58:101552browse

What is the method for implementing queue in PHP? A queue is a linear table that operates on a first-in, first-out basis. Let's take a look at the implementation of a PHP queue algorithm introduced in this article.

There are two classes in this queue algorithm. One is the data class, which stores data; the second is the queue, which is the queue class. This is some operations of the queue.

First of all, the queue contains 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 (storage all data objects that enter the queue, the default in queue When there is an element, front and rear both point to it) maxsize (the length of the queue) four attributes

Application instructions:

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

2. Join the queue: Determine whether the queue is full (front-rear==maxsize), If the prompt is full, if it is not full, first move front 1, and then move all the elements in the queue forward one position (that is, give up the tail position of the queue to the new arrival), and then generate a data object and insert it into the position of tail 1 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("A");
$q->InQ(&#39;B&#39;);
$q->InQ(&#39;游泳&#39;);
$q->InQ(&#39;C&#39;);
$q->OutQ();
$q->InQ("D");
$q->OutQ();
$q->OutQ();
$q->OutQ();
$q->OutQ();

Related recommendations:

PHP implements a two-way queue

The above is the detailed content of How to implement PHP queue algorithm?. 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