ホームページ > バックエンド開発 > PHPチュートリアル > PHPキューアルゴリズムを実装するにはどうすればよいですか?

PHPキューアルゴリズムを実装するにはどうすればよいですか?

不言
リリース: 2023-04-03 10:06:02
オリジナル
1551 人が閲覧しました

PHPでキューを実装する方法は何ですか?キューは先入れ先出しベースで動作する線形テーブルです。この記事で紹介する PHP キュー アルゴリズムの実装を見てみましょう。

このキュー アルゴリズムには 2 つのクラスがあります。1 つはデータを格納するデータ クラス、2 つ目はキュー (キュー クラス) です。これはキューの一部の操作です。

まず、キューには、フロント (キューの先頭、つまりキューから出たい人) リア (ここではキューの最後尾は常に 0 を指します) のキュー (キューに入るすべてのデータ オブジェクトを格納します。キューのデフォルトです。要素がある場合、前後の両方がそれを指します。maxsize (キューの長さ) 4 つの属性

アプリケーション手順:

1 キューを初期化します: キューを生成し、maxsize 初期化としてパラメータを渡します。キューは後部を 0 に、前部を 0 に設定します。この時点では、キューには要素 0 のみがあり、後部と前部の両方が彼を指します

2. キューに参加します: キューがいっぱいかどうかを判断します (front-rear==maxsize)。プロンプトがいっぱいの場合、いっぱいでない場合は、最初に前に 1 を移動し、次にすべての要素を移動します。キューを 1 つ進めて (つまり、キューの末尾の位置を新しい到着に譲り)、データ オブジェクトを生成してキューの末尾 1 の位置に挿入します。この度無事にチームに加わりました!

3. デキュー: キューが空かどうかを確認します (front==rear)。空の場合はプロンプトが表示されます。空でない場合は、front、front-1 ( 1 つ後ろに移動)、終了します。チームの成功!

<?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();
ログイン後にコピー

関連する推奨事項:

PHP は双方向キューを実装します

以上がPHPキューアルゴリズムを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート