Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man den PHP-Warteschlangenalgorithmus?

Wie implementiert man den PHP-Warteschlangenalgorithmus?

不言
不言Original
2018-07-20 17:58:101520Durchsuche

Was ist die Methode zur Implementierung einer Warteschlange in PHP? Eine Warteschlange ist eine lineare Tabelle, die nach dem First-In-First-Out-Prinzip arbeitet. Werfen wir einen Blick auf die Implementierung eines PHP-Warteschlangenalgorithmus, der in diesem Artikel vorgestellt wird.

Es gibt zwei Klassen in diesem Warteschlangenalgorithmus. Eine ist die Datenklasse, die Daten speichert. Die zweite ist die Warteschlange, bei der es sich um einige Operationen der Warteschlange handelt.

Zunächst enthält die Warteschlange vorne (den Kopf der Warteschlange, also die Person, die aus der Warteschlange herauskommen möchte), hinten (das Ende der Warteschlange zeigt hier immer auf 0) Warteschlange ( Speicherung aller in die Warteschlange eingegebenen Datenobjekte, Standard in der Warteschlange. Wenn ein Element vorhanden ist, zeigen sowohl die Vorder- als auch die Rückseite darauf) maxsize (die Länge der Warteschlange) vier Attribute

Anwendungsanweisungen:

1 Initialisieren Sie die Warteschlange: Erzeugen Sie eine Warteschlange und übergeben Sie einen Parameter als Maxsize-Initialisierung. Die Warteschlange setzt hinten auf 0 und vorne auf 0. Zu diesem Zeitpunkt gibt es nur Element 0 in der Warteschlange, sowohl hinten als auch vorne zeigen auf ihn

2. Treten Sie der Warteschlange bei: Bestimmen Sie, ob die Warteschlange voll ist (vorne-hinten == maxsize). Wenn die Eingabeaufforderung voll ist, wenn sie nicht voll ist, lassen Sie zuerst vorne + 1 und verschieben Sie dann alle Elemente in der Warteschlange eine Position nach vorne verschieben (d. h. die Endposition der Warteschlange für den Neuankömmling aufgeben), dann ein Datenobjekt generieren und es an der Endposition + 1 einfügen. 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("A");
$q->InQ(&#39;B&#39;);
$q->InQ(&#39;游泳&#39;);
$q->InQ(&#39;C&#39;);
$q->OutQ();
$q->InQ("D");
$q->OutQ();
$q->OutQ();
$q->OutQ();
$q->OutQ();

Verwandte Empfehlungen:

PHP implementiert eine bidirektionale Warteschlange

Das obige ist der detaillierte Inhalt vonWie implementiert man den PHP-Warteschlangenalgorithmus?. 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