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