PHP 데이터 구조 대기 열(SplQueue)과 우선 대기 열(SplPriorityQueue)은 인 스 턴 스 를 간단하게 사용 합 니 다.
PHP SPL 에서 SplQueue 류 는 대기 열 작업 을 실현 하 는 것 입 니 다.스 택 과 마찬가지 로 더 블 링크 목록(SplDoubly LinkedList)을 계승 하여 쉽게 실현 할 수 있 습 니 다.
SplQueue 클래스 요약 은 다음 과 같 습 니 다.
SplQueue 는 아래 와 같이 간단하게 사용 합 니 다:
$queue = new SplQueue();
/**
* IteratorMode , 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);
우선 대기 열 Spl Priority Queue 는 쌓 기(뒷글 소개)를 바탕 으로 이 루어 집 니 다.SplPriority Queue 의 클래스 요약 은 다음 과 같 습 니 다.
SplPriorityQueue 간단하게 사용:
$pq = new SplPriorityQueue();
$pq->insert('a', 10);
$pq->insert('b', 1);
$pq->insert('c', 8);
echo $pq->count() .PHP_EOL; //3
echo $pq->current() . PHP_EOL; //a
/**
*
* 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();
}