現在の位置: ホーム> 最新記事一覧> PHPはリンクリストキューを実装しています:テールポインターを使用して、ファーストインファーストアウトキューを実装する

PHPはリンクリストキューを実装しています:テールポインターを使用して、ファーストインファーストアウトキューを実装する

gitbox 2025-07-30

リンクされたリストキューとは何ですか

キューはファーストイン(FIFO)データ構造であり、チームの最後に要素を追加し、チームの終わりに要素を削除することができます。チェーンキューは、リンクされたリストを介して実装されたキュー構造であり、キューのサイズを動的に拡張できます。チェーンキューは、ファーストインファーストアウト機能が必要な多くのシナリオで広く使用されています。

リンクされたリストキューの実装

リンクされたリストキューは、リンクリスト構造を使用して実装されます。リンクされたリストノードには、データドメインとポインタードメインの2つの部分が含まれています。ポインターフィールドは、次のリンクリストノードを指します。キューの実装は、キューの最初の要素を指すヘッドとテールポインターに依存し、テールポインターは最後の要素を指します。

リンクリストノード定義

リンクされたリストノードは、データドメインとポインタードメインの2つの部分で構成され、ポインタードメインは次のノードを指します。以下は、PHPがリンクリストノードを実装するためのコードです。

 
class Node {
    public $data;
    public $next;
}

キューの定義

キューの定義には、チームの頭と尾の2つのポインターが含まれています。テールポインターはキューの最後の要素を指し、ヘッドポインターは最初の要素を指します。キューの長さは、要素の追加とともに増加します。以下は、PHPでキューを実装するためのコードです。

 
class Queue {
    private $head;
    private $tail;

    public function __construct() {
        $this->head = null;
        $this->tail = null;
    }

    public function isEmpty() {
        return $this->head === null;
    }

    public function enqueue($data) {
        $newNode = new Node();
        $newNode->data = $data;
        $newNode->next = null;

        if ($this->isEmpty()) {
            $this->head = $this->tail = $newNode;
        } else {
            $this->tail->next = $newNode;
            $this->tail = $newNode;
        }
    }

    public function dequeue() {
        if ($this->isEmpty()) {
            return null;
        }

        $data = $this->head->data;
        $this->head = $this->head->next;

        if ($this->head === null) {
            $this->tail = null;
        }

        return $data;
    }
}

シナリオを使用します

リンクリストキューは、次のシナリオでよく使用されます。

  • 幅広い検索アルゴリズム(BFS)
  • スレッドプールタスクの割り当て
  • キューなどを印刷します。

要約します

リンクされたリストキューは、ファーストインファーストアウト(FIFO)データ構造を実装する一般的な方法であり、タスクを順番に処理する必要がある多くのシナリオに適しています。リンクリストの柔軟性により、さまざまなアプリケーションのニーズを満たすためにキューを動的に拡張できます。リンクされたリストキューの実装は、シンプルで効率的であるだけでなく、プログラミングに不可欠なツールです。