ホームページ >バックエンド開発 >PHPチュートリアル >PHPデータ構造キュー(SplQueue)とプライオリティキュー(SplPriorityQueue)の簡単な使用例_PHPチュートリアル

PHPデータ構造キュー(SplQueue)とプライオリティキュー(SplPriorityQueue)の簡単な使用例_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:53:421299ブラウズ

PHPデータ構造キュー(SplQueue)と優先キュー(SplPriorityQueue)の簡単な使用例

この記事では主にPHPデータ構造キュー(SplQueue)と優先キュー(SplPriorityQueue)の簡単な使用例を紹介しますので、必要な方は参考にしてください。それに

キューは、私たちの生活におけるキューと同じように、先入れ先出し(FIFO)という特徴を持った、よりシンプルなデータ構造です。

PHP SPLのSplQueueクラスもスタックと同様にSplDoublyLinkedListを継承することで簡単に実装できます。

SplQueueクラスの概要は以下の通りです。

SplQueueは単純に次のように使用されます:

コードは次のとおりです:

$queue = new SplQueue();

/**

* キューと二重リンクリストの違いは、スタックの IteratorMode が次のようにのみ変更されることであることがわかります。

* (1)SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP (デフォルト値、反復後にデータが保存されます)

* (2)SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE (反復後に削除されるデータ)

*/

$queue->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_DELETE);

//SplQueue::enqueue() は実際には SplDoublyLinkedList::push() です

$queue->enqueue('a');

$queue->enqueue('b');

$queue->enqueue('c');

//SplQueue::dequeue() は実際には SplDoublyLinkedList::shift() です

print_r($queue->dequeue());

foreach($queue as $item) {

echo $item .PHP_EOL;

}

print_r($queue);

プライオリティキューSplPriorityQueueはヒープをベースに実装されています(後述)。

SplPriorityQueueのクラス概要は以下の通りです。

SplPriorityQueue は使い方が簡単です:
?

1$pq = 新しい SplPriorityQueue();
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

$pq->insert('a', 10);

$pq->insert('b', 1);

$pq->insert('c', 8);

echo $pq->count() .PHP_EOL;

echo $pq->current() .PHP_EOL;

/**

* 要素デキューモードを設定します

* SplPriorityQueue::EXTR_DATA は値のみを抽出します

* SplPriorityQueue::EXTR_PRIORITY は優先度のみを抽出します

* SplPriorityQueue::EXTR_BOTH は、値と優先度を含む配列を抽出します

*/

$pq->setExtractFlags(SplPriorityQueue::EXTR_DATA);

while($pq->valid()) {

print_r($pq->current()); //a c b

$pq->next();

}

http://www.bkjia.com/PHPjc/1000102.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/1000102.html技術記事 PHPデータ構造キュー(SplQueue)とプライオリティキュー(SplPriorityQueue)の簡単な使用例 この記事では、PHPデータ構造キュー(SplQueue)とプライオリティキュー(SplPriorityQueue)の簡単な使い方を中心に紹介します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。