PHP에서 대기열을 구현하는 방법은 무엇인가요?
이 대기열 알고리즘에는 두 가지 클래스가 있습니다.
첫 번째 클래스는 데이터를 저장하는 데이터 클래스입니다.
두 번째는 큐 클래스입니다. 이것은 큐의 일부 작업입니다. 큐를 떠날 때 나가야 합니다.
후면(큐의 꼬리는 항상 0을 가리킵니다. 여기)
대기열(대기 중인 모든 데이터 개체를 저장하며 기본적으로 대기열에 하나가 있습니다. 요소가 비어 있으면 앞과 뒤 모두 이를 가리킵니다.)
maxsize( 큐의 길이)
응용 프로그램 지침:
1 큐 초기화: 큐 생성 매개변수를 maxsize로 전달하여 큐를 초기화하고, Rear를 0으로 설정하고, front를 0으로 설정합니다. 현재 큐에는 요소 0만 있으며, Rear와 Front는
2를 가리킵니다. Enqueue: 큐가 가득 찼는지 확인합니다(front-rear==maxsize). ), 꽉 차 있으면 메시지가 표시됩니다. 먼저 front + 1을 지정한 다음 대기열의 모든 요소를 한 위치 앞으로 이동합니다(즉, 대기열의 꼬리 위치를 새 도착으로 포기합니다). ), 생성된 데이터 객체는 큐의 끝 위치 +1에 삽입됩니다. 이번에 성공적으로 팀에 합류했습니다!
3. 큐 제거: 큐가 비어 있는지 확인합니다(앞==뒤). 비어 있으면 앞쪽이 가리키는 개체를 삭제합니다. 1 (한 자리 뒤로 이동) , 성공적으로 팀에 합류했습니다!
<?php /** * php队列算法 * * Create On 2010-6-4 * Author Been * QQ:281443751 * Email:binbin1129@126.com **/ class data { //数据 private $data; public function __construct($data){ $this->data=$data; echo $data.":哥进队了!<br>"; } public function getData(){ return $this->data; } public function __destruct(){ echo $this->data.":哥走了!<br>"; } } class queue{ protected $front;//队头 protected $rear;//队尾 protected $queue=array('0'=>'队尾');//存储队列 protected $maxsize;//最大数 public function __construct($size){ $this->initQ($size); } //初始化队列 private function initQ($size){ $this->front=0; $this->rear=0; $this->maxsize=$size; } //判断队空 public function QIsEmpty(){ return $this->front==$this->rear; } //判断队满 public function QIsFull(){ return ($this->front-$this->rear)==$this->maxsize; } //获取队首数据 public function getFrontDate(){ return $this->queue[$this->front]->getData(); } //入队 public function InQ($data){ if($this->QIsFull())echo $data.":我一来咋就满了!(队满不能入队,请等待!)<br>"; else { $this->front++; for($i=$this->front;$i>$this->rear;$i--){ //echo $data; if($this->queue[$i])unset($this->queue[$i]); $this->queue[$i]=$this->queue[$i-1]; } $this->queue[$this->rear+1]=new data($data); //print_r($this->queue); //echo $this->front; echo '入队成功!<br>'; } } //出队 public function OutQ(){ if($this->QIsEmpty())echo "队空不能出队!<br>"; else{ unset($this->queue[$this->front]); $this->front--; //print_r($this->queue); //echo $this->front; echo "出队成功!<br>"; } } } $q=new queue(3); $q->InQ("小苗"); $q->InQ('马帅'); $q->InQ('溜冰'); $q->InQ('张世佳'); $q->OutQ(); $q->InQ("周瑞晓"); $q->OutQ(); $q->OutQ(); $q->OutQ(); $q->OutQ();
실행 결과:
小苗:哥进队了! 入队成功 马帅:哥进队了! 入队成功 溜冰:哥进队了! 入队成功 张世佳:我一来咋就满了!(队满不能入队,请等待!) 小苗:哥走了! 出队成功! 周瑞晓:哥进队了! 入队成功 马帅:哥走了! 出队成功! 溜冰:哥走了! 出队成功! 周瑞晓:哥走了! 出队成功! 队空不能出队! 队空不能出队!
위 내용은 PHP에서 대기열을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!