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

So implementieren Sie eine Warteschlange in PHP

(*-*)浩
(*-*)浩Original
2019-09-27 11:56:003078Durchsuche

So implementieren Sie eine Warteschlange in PHP

Es gibt zwei Klassen in diesem Warteschlangenalgorithmus:

Die erste ist die Datenklasse, also die Speicherung Daten; (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz

Die zweite ist die Warteschlangenklasse. Dies sind einige Operationen der Warteschlange 🎜>

Zuallererst enthält die Warteschlange vier Attribute:

vorne (der Kopf der Warteschlange, also die Person, die aus der Warteschlange hinausgehen möchte)

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

Warteschlange (speichert alle Datenobjekte in der Warteschlange. Standardmäßig gibt es ein Element in der Warteschlange. Wenn es leer ist, zeigen sowohl vorne als auch hinten darauf )

maxsize (die Länge der Warteschlange)

Anwendungsanweisungen:

1 Initialisieren Sie die Warteschlange: Erzeugen Sie eine Warteschlange und übergeben Sie einen Parameter als maxsize. Initialisieren Sie die Warteschlange, setzen Sie die Rückseite auf 0 und die Vorderseite auf 0. Zu diesem Zeitpunkt zeigen nur Element 0 hinten und vorne auf ihn

2 ob die Warteschlange voll ist (vorne-hinten == maxsize), wenn voll, Eingabeaufforderung, wenn nicht voll, zuerst vorne + 1 und dann alle Warteschlangen lassen Das Element wird um eine Position nach vorne verschoben (dh die Position am Ende). (der Wert der Warteschlange wird an den Neuankömmling weitergegeben), anschließend wird das Datenobjekt generiert und an der Position +1 am Ende der Warteschlange eingefügt. 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();

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