큐란 무엇인가요?
큐는 테이블의 프런트 엔드(프론트라고 함)에서만 삭제 작업과 리어라고 할 수 있는 테이블의 백 엔드에서만 삽입 작업을 허용하는 특수 선형 테이블입니다.
스택과 마찬가지로 큐는 작업이 제한된 선형 목록입니다. 스택과의 차이점은 큐는 "선입 선출" 원칙을 따르는 반면, 스택은 "선입 선출" 원칙을 따른다는 것입니다. . 삽입 작업이 수행되는 큐의 끝을 큐의 끝이라고 하며 삭제 작업이 수행되는 끝을 큐의 헤드라고 합니다. 큐의 끝에서는 삽입 작업만 허용되며 삭제도 가능합니다. 작업은 대기열의 헤드에서 허용됩니다.
큐의 데이터 요소를 큐 요소라고도 합니다. 큐의 끝에 요소를 삽입하는 것을 큐에 넣기라고 하며, 큐의 선두에 있는 요소를 삭제하는 것을 큐에서 빼기라고 합니다.
추천 비디오 튜토리얼: php 비디오 튜토리얼
구현 코드:
<?php /** * php队列算法 **/ 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();
이 경우에는 두 가지 클래스가 있습니다:
첫 번째는 데이터를 저장하고 요소를 큐에 넣거나 빼는 데 사용되는 데이터 클래스입니다.
두 번째는 대기열 요소의 대기열 추가 및 대기열 제거 작업에 사용되는 대기열 클래스입니다.
큐에는 네 가지 속성이 있습니다.
front(큐의 선두)
rear(큐의 꼬리)
maxsize(큐의 길이, 즉 큐 요소의 수)
queue (큐에 추가된 모든 큐를 저장) 요소의 객체)
장면 설명:
1. 큐를 초기화할 때 큐를 생성하고, 매개변수를 maxsize로 전달하고, 큐를 초기화하고, 큐의 뒷면을 로 설정합니다. 0, 큐의 앞부분을 0으로 설정합니다. 이때 Element 0만 있고 Rear와 Front가 모두 이를 가리킵니다.
2. 큐에 참가할 때 먼저 큐가 가득 찼는지 확인해야 합니다(앞-뒤 == 최대 크기). 가득 차면 삽입이 허용되지 않습니다. 삽입할 때 front가 증가하고 큐의 모든 요소가 한 위치만큼 앞으로 이동한 다음(큐의 tail 위치를 떠나 새 요소를 삽입함) 새 데이터 객체가 생성되어 tail 위치에 삽입됩니다. 대기줄.
3. 대기열에서 제거할 때 대기열이 비어 있는지 확인합니다(앞 == 뒤쪽). 비어 있으면 대기열에서 제거할 수 없습니다. 비어 있지 않으면 앞이 가리키는 객체를 삭제하고 앞부분을 줄여서 큐 제거를 완료합니다.
실행 결과는 다음과 같습니다.
추천 관련 기사 및 튜토리얼: php 튜토리얼
위 내용은 PHP에서 대기열을 구현하는 자세한 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!