대기열을 구현하기 위한 PHP 데이터 구조의 샘플 코드
큐: FIFO(선입선출) 규칙을 충족합니다.
다음은 PHP를 사용하여 간단한 순환 큐 모델을 구현합니다.
큐의 초기 상태에서 큐 길이는 0이고 포인터는 다음과 같습니다. 대기열의 헤드와 테일은 동일합니다.
큐 작업 시작: 대기열 테일 포인터가 뒤로 이동하고 길이가 1 증가합니다.
큐 제거 작업; 포인터가 뒤로 이동하면 길이가 1만큼 감소합니다.
원형 대기열의 특징: 대기열 크기는 고정되고 대기열 길이는 1만큼 줄어듭니다. 열린 메모리 공간을 재활용할 수 있으며 포인터의 이동은 기반입니다.
다음 예제에서는 배열을 사용하여 대기열 저장을 구현하고 배열 첨자를 포인터로 사용합니다.
<?php /** * Class Queue */ class Queue { /** * @var int 队头指针 */ private $_front; /** * @var int 队尾指针 */ private $_rear; /** * @var array 队列数组 */ private $_queue; /** * @var int 队列实际长度 */ private $_queueLength; /** * @var int 队列容量; */ private $_queueSize; /** * Queue constructor.初始化队列 * @param int $capacity 容量(循环队列的最大长度) */ public function __construct($size) { $this->_queue = []; $this->_queueSize = $size; $this->_front = 0; $this->_rear = 0; $this->_queueLength = 0; } /** * 销毁队列; */ public function __destruct() { unset($this->_queue); } /** * @method 入队 * @param mixed $elem 入队的元素 * @return bool */ public function enQueue($elem) { if (!$this->isFull()) { $this->_queue[$this->_rear] = $elem; $this->_rear++; $this->_rear = $this->_rear % $this->_queueCapacity; $this->_queueLength++; return true; } return false; } /** * @method 出队 * @return mixed|null */ public function deQueue() { if (!$this->isEmpty()) { $elem = $this->_queue[$this->_front]; //unset($this->_queue[$this->_front]); $this->_front++; $this->_front %= $this->_queueCapacity; $this->_queueLength--; return $elem; } return null; } /** * @method 判断队列是否为空; * @return bool */ public function isEmpty() { return $this->_queueLength === 0; } /** * @method 判断队列是否饱和; * @return bool */ public function isFull() { return $this->_queueLength === $this->_queueCapacity; } /** * @method 遍历队列并输出(测试队列) */ public function outputQueue() { for ($i = $this->_front; $i < $this->_queueLength + $this->_front; $i++) { echo $this->_queue[$i % $this->_queueCapacity].PHP_EOL; } } /** * @method 清空队列 */ public function clearQueue() { $this->_queue = []; $this->_front = 0; $this->_rear = 0; $this->_queueLength = 0; } }
대기열 클래스 테스트는 솔직히 별거 아닙니다. 실제 비즈니스 시나리오에 따라 다릅니다.
$a = new Queue(3); echo 'enQueue1 $a->enQueue(1)'.PHP_EOL; $a->enQueue(1); echo 'enQueue2 $a->enQueue(2)'.PHP_EOL; $a->enQueue(2); echo 'enQueue3 $a->enQueue(3)'.PHP_EOL; $a->enQueue(3); echo 'enQueue4 $a->enQueue(4)'.PHP_EOL; $a->enQueue(4); //讲道理是失败的; $a->outputQueue(); //输出 1 2 3 echo PHP_EOL; echo PHP_EOL; echo $a->deQueue(); //输出 1 队列 2 3 echo PHP_EOL; echo PHP_EOL; echo $a->deQueue(); //输出 2 队列 3 $a->enQueue(5); //队列 3 5 echo PHP_EOL; echo PHP_EOL; $a->outputQueue(); //输出 3 5 $a->clearQueue(); //队列空;
뭔가 잘못된 경우 조언해 주세요
위 내용은 대기열을 구현하기 위한 PHP 데이터 구조의 샘플 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
