Heim > Backend-Entwicklung > PHP-Tutorial > Was ist eine PHP-Warteschlange? Wie erreichen? (Codebeispiel)

Was ist eine PHP-Warteschlange? Wie erreichen? (Codebeispiel)

青灯夜游
Freigeben: 2023-04-04 12:58:01
nach vorne
2721 Leute haben es durchsucht

Der Inhalt dieses Artikels besteht darin, vorzustellen, was eine PHP-Warteschlange ist. Wie erreicht man es? (Codebeispiel). Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Die Warteschlange ist eine spezielle lineare Tabelle, die nur Löschvorgänge am vorderen Ende der Tabelle, die als „vorne“ bezeichnet werden können, und Einfügevorgänge am hinteren Ende der Tabelle, die als „hinten“ bezeichnet werden können, zulässt.

Eine Warteschlange ist wie ein Stapel eine lineare Liste mit eingeschränkten Operationen. Der Unterschied zu einem Stapel besteht darin, dass eine Warteschlange dem „First in, first out“-Prinzip folgt, während ein Stack dem „First in, first out“-Prinzip folgt „out“-Prinzip.

Das Ende der Warteschlange, an dem der Einfügevorgang ausgeführt wird, wird als Ende der Warteschlange bezeichnet, und das Ende, an dem der Löschvorgang ausgeführt wird, wird als Kopf der Warteschlange bezeichnet. Einfügungsvorgänge sind nur am Ende zulässig der Warteschlange, und Löschvorgänge werden am Anfang der Warteschlange ausgeführt.

Die Datenelemente der Warteschlange werden auch als Warteschlangenelemente bezeichnet. Das Einfügen eines Elements am Ende der Warteschlange wird als Einreihen bezeichnet, und das Löschen eines Elements am Anfang der Warteschlange wird als Ausschließen bezeichnet.

Spezifischer Implementierungsreferenzcode:

<?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('0'=>'队尾');//存储队列
    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 '入队成功!<br>';
        }
    }
    //出队
    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('马帅');
$q->InQ('溜冰');
$q->InQ('张世佳');
$q->OutQ();
$q->InQ("周瑞晓");
$q->OutQ();
$q->OutQ();
$q->OutQ();
$q->OutQ();
Nach dem Login kopieren

In diesem Fall gibt es zwei Klassen:

Die erste ist die Datenklasse, die zum Speichern von Daten und zum Eingeben von Warteschlangenelementen verwendet wird . Queue- und Dequeue-Situationen;

Die zweite Klasse ist die Queue-Klasse, die für einige Enqueue- und Dequeue-Vorgänge von Warteschlangenelementen verwendet wird.

Die Warteschlange enthält vier Attribute:

vorne (der Kopf der Warteschlange)

hinten (das Ende der Warteschlange)

maxsize (die Länge der Warteschlange, also die Anzahl der Warteschlangenelemente)

Warteschlange (ein Objekt, das alle Warteschlangenelemente speichert, die in die Warteschlange gestellt wurden)

Szenariobeschreibung:

1. Generieren Sie beim Initialisieren der Warteschlange eine Warteschlange und übergeben Sie sie. Geben Sie einen Parameter als maxsize ein, um die Warteschlange zu initialisieren, setzen Sie die Rückseite der Warteschlange auf 0 und die Vorderseite der Warteschlange auf 0. Zu diesem Zeitpunkt gibt es nur Element 0 in der Warteschlange Warteschlange, und sowohl hinten als auch vorne zeigen darauf.

2. Beim Beitritt zur Warteschlange müssen Sie zunächst feststellen, ob die Warteschlange voll ist (vorne-hinten == maxsize). Wenn sie nicht voll ist, ist das Einfügen möglich erlaubt. Beim Einfügen wird vorne inkrementiert, und dann werden alle Elemente der Warteschlange um eine Position nach vorne verschoben (wobei die Endposition der Warteschlange verbleibt, um neue Elemente einzufügen), und dann wird ein neues Datenobjekt generiert und an der Endposition der Warteschlange eingefügt Warteschlange.

3. Stellen Sie beim Entnehmen fest, ob die Warteschlange leer ist (vorne == hinten). Wenn es nicht leer ist, löschen Sie das Objekt, auf das front zeigt, und dekrementieren Sie front, um das Entfernen aus der Warteschlange abzuschließen.

Die laufenden Ergebnisse sind wie folgt:

Was ist eine PHP-Warteschlange? Wie erreichen? (Codebeispiel)

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird. Empfohlene weitere verwandte Video-Tutorials: PHP-Tutorial!

Das obige ist der detaillierte Inhalt vonWas ist eine PHP-Warteschlange? Wie erreichen? (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage