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-09-27 11:56:003078parcourir

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 est le stockage Données ; (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)

La seconde est la classe de file d'attente, qui est la classe de file d'attente. Il s'agit de quelques opérations de la file d'attente ; 🎜>

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

front (la tête de file d'attente, c'est-à-dire la personne qui veut sortir de la file d'attente)

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

file d'attente (stocke tous les objets de données en file d'attente, il y a un élément dans la file d'attente par défaut. Lorsqu'elle est vide, l'avant et l'arrière pointent vers lui )

maxsize (la longueur de la file d'attente)

Instructions d'application :

1 Initialiser la file d'attente : Générer une file d'attente et transmettre un paramètre comme maxsize. Initialisez la file d'attente, définissez Rear à 0 et Front à 0. À ce stade, il n'y a que l'élément 0 Rear dans la file d'attente et Front les deux pointent vers lui

2. Rejoignez la file d'attente : Déterminez. si la file d'attente est pleine (front-rear==maxsize), si elle est pleine, invite, si elle n'est pas pleine, laissez d'abord front+1, puis laissez toutes les files d'attente L'élément est déplacé d'une position vers l'avant (c'est-à-dire la position à la fin de la file d'attente est cédée au nouveau venu), puis l'objet de données est généré et inséré à 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();

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