Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie eine Warteschlange in PHP

So implementieren Sie eine Warteschlange in PHP

藏色散人
藏色散人Original
2019-11-13 10:31:363893Durchsuche

So implementieren Sie eine Warteschlange in PHP

Wie implementiert man eine Warteschlange in PHP?

Es gibt zwei Klassen in diesem Warteschlangenalgorithmus:

Die erste ist die Datenklasse, die Daten speichert.

Die zweite ist die Warteschlangenklasse Das heißt, die Warteschlangenklasse besteht aus einigen Operationen der Warteschlange.

Zunächst enthält die Warteschlange vier Attribute:

Vorne (der Kopf der Warteschlange, also die Person, die möchte). um aus der Warteschlange herauszukommen)

Hinten (das Ende der Warteschlange zeigt hier immer auf 0)

Warteschlange (Speicherung aller in die Warteschlange gestellten Datenobjekte, es gibt standardmäßig ein Element in der Warteschlange, wenn es ist leer, sowohl vorne als auch hinten zeigen darauf)

maxsize (Warteschlangenlänge)

Anwendungsanweisungen:

1 Initialisieren Sie die Warteschlange: Erzeugen Sie eine Warteschlange und übergeben Sie a Parameter als maxsize. Initialisieren Sie die Warteschlange, setzen Sie die Rückseite auf 0 und die Vorderseite auf 0. Zu diesem Zeitpunkt zeigen nur die hinteren und vorderen Elemente der Warteschlange auf ihn

2. Treten Sie der Warteschlange bei: Bestimmen Sie, ob die Warteschlange vorhanden ist voll (vorne-hinten==maxsize). Wenn es nicht voll ist, verschieben Sie zuerst alle Elemente in der Warteschlange um eine Position (das heißt, machen Sie Platz). der Neuankömmling am Ende der Warteschlange) und generieren Sie dann ein Datenobjekt und fügen Sie es an der Position +1 am Ende der Warteschlange ein. Zu diesem Zeitpunkt erfolgreich dem Team beigetreten!

3. Bestimmen Sie, ob die Warteschlange leer ist (vorne == hinten). Wenn sie nicht leer ist, löschen Sie das Objekt, auf das front, front-1 zeigt. eine Position nach hinten verschieben) und Erfolg im Team!

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

Laufendes Ergebnis:

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

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine Warteschlange in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn