Was ist eine Warteschlange?
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ügungsvorgä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. Last-out-Prinzip. Das Ende der Warteschlange, an dem die Einfügeoperation ausgeführt wird, wird als Ende der Warteschlange bezeichnet, und das Ende, an dem die Löschoperation ausgeführt wird, wird als Kopf der Warteschlange bezeichnet. Einfügungsoperationen sind nur am Ende der Warteschlange und zum Löschen zulässig Operationen sind an der Spitze der Warteschlange zulässig.
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 „Entfernen“ bezeichnet.
Empfohlenes Video-Tutorial: PHP-Video-Tutorial
Implementierungscode:
<?php /** * php队列算法 **/ 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();
In diesem Fall gibt es zwei Klassen:
Nr . Eine davon ist die Datenklasse, die zum Implementieren der Datenspeicherung und zum Ein- und Ausreihen von Warteschlangenelementen verwendet wird.
Die zweite ist die Warteschlangenklasse, die für einige Ein- und Ausreihungsvorgä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 in die Warteschlange gestellten Warteschlangenelemente speichert)
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:
Empfohlene Tutorials zu verwandten Artikeln: PHP-Tutorial
Das obige ist der detaillierte Inhalt vonDetaillierte Schritte zum Implementieren der Warteschlange in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!