대기열은 팀의 끝에서 요소를 추가 할 수있는 최초의 최초의 첫 번째 (FIFO) 데이터 구조로 팀 끝에 요소를 삭제할 수 있습니다. 체인 큐는 링크 된 목록을 통해 구현 된 큐 구조로, 대기열의 크기를 동적으로 확장 할 수 있습니다. 체인 큐는 첫 번째 첫 번째 기능이 필요한 많은 시나리오에서 널리 사용됩니다.
링크 된 목록 큐는 링크 된 목록 구조를 사용하여 구현됩니다. 링크 된 목록 노드에는 데이터 도메인과 포인터 도메인의 두 부분이 포함되어 있습니다. 포인터 필드는 다음 링크 된 목록 노드를 가리 킵니다. 큐의 구현은 헤드와 테일 포인터에 따라 달라집니다. 포인터는 큐의 첫 번째 요소를 가리키고 테일 포인터는 마지막 요소를 가리 킵니다.
링크 된 목록 노드는 데이터 도메인과 포인터 도메인의 두 부분으로 구성되며 포인터 도메인은 다음 노드를 가리 킵니다. 다음은 PHP가 링크 된 목록 노드를 구현하는 코드입니다.
class Node {
public $data;
public $next;
}
대기열 정의에는 두 개의 포인터가 포함되어 있습니다 : 헤드와 팀의 꼬리. 테일 포인터는 큐의 마지막 요소를 가리키고 헤드 포인터는 첫 번째 요소를 가리 킵니다. 요소가 추가되면 대기열의 길이가 증가합니다. 다음은 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 (First-In-First-Out) 데이터 구조를 구현하는 일반적인 방법이며 작업을 순서대로 처리 해야하는 많은 시나리오에 적합합니다. 링크 된 목록의 유연성을 통해 다양한 응용 프로그램 요구를 충족시키기 위해 대기열을 동적으로 확장 할 수 있습니다. 링크 된 목록 큐의 구현은 간단하고 효율적 일뿐 만 아니라 프로그래밍에 없어서는 안될 도구입니다.