Maison >développement back-end >Problème PHP >Comment implémenter la file d'attente en php

Comment implémenter la file d'attente en php

藏色散人
藏色散人original
2019-11-13 10:31:364013parcourir

Comment implémenter la file d'attente en php

Comment implémenter la file d'attente en php ?

Il y a deux classes dans cet algorithme de file d'attente :

La première est la classe de données, qui stocke les données

La seconde est la classe de file d'attente, c'est-à-dire ; pour dire, la classe de file d'attente est constituée de quelques opérations de la file d'attente ;

Tout d'abord, la file d'attente contient quatre attributs :

Front (le chef de la file d'attente, c'est-à-dire la personne qui veut pour sortir de la file d'attente)

Arrière (la queue de la file d'attente pointe toujours vers 0 ici)

Queue (stockage de tous les objets de données mis en file d'attente, il y a un élément dans la file d'attente par défaut lorsque il est vide, l'avant et l'arrière y pointent)

maxsize (longueur de la file d'attente)

Instructions d'application :

1 Initialiser la file d'attente : générer une file d'attente et passer dans un paramètre comme maxsize. Initialisez la file d'attente, définissez Rear sur 0 et Set Front sur 0. À ce moment, file d'attente Seuls les éléments 0 Rear et Front pointent vers lui

2. Rejoignez la file d'attente : Déterminez si la file d'attente est full (front-rear==maxsize). S'il est plein, il vous demandera s'il n'est pas plein, laissez front+1 d'abord, avancez ensuite tous les éléments de la file d'attente d'une position (c'est-à-dire faites place à). le nouvel arrivant en fin de file d'attente), puis générer un objet de données et l'insérer à la position +1 en fin de file d'attente. J'ai rejoint l'équipe avec succès en ce moment !

3. Supprimer la file d'attente : Déterminez si la file d'attente est vide (front==rear). Si elle est vide, elle vous demandera si elle n'est pas vide, supprimez l'objet pointé par front, front-1 (. reculez d’une position) et sortez. Succès d’équipe !

<?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();

Résultats en cours d'exécution :

小苗:哥进队了!
入队成功
马帅:哥进队了!
入队成功
溜冰:哥进队了!
入队成功
张世佳:我一来咋就满了!(队满不能入队,请等待!)
小苗:哥走了!
出队成功!
周瑞晓:哥进队了!
入队成功
马帅:哥走了!
出队成功!
溜冰:哥走了!
出队成功!
周瑞晓:哥走了!
出队成功!
队空不能出队!
队空不能出队!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie imploser en php ?Article suivant:Que signifie imploser en php ?