PHP 대기 열의 실현 을 자세히 설명 합 니 다.
대기 열의 데이터 요 소 는 대기 열 요소 라 고도 부 릅 니 다.대기 열 끝 에 하나의 요 소 를 삽입 하 는 것 을 입 대 라 고 합 니 다.대기 열 에서 하나의 요 소 를 삭제 하 는 것 을 출 대 라 고 합 니 다.참고 코드 구현:
<?php
/**
* php
*
* Create On 2010-6-4
* Author Been
* QQ:281443751
* Email:[email protected]
**/
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();
본 사례 에는 두 가지 유형 이 있다.첫 번 째 는 data 류 로 데이터 의 저장 과 대기 열 요소 의 입대 상황 을 실현 하 는 데 사 용 됩 니 다.
두 번 째 는 queue 류 로 대기 열 요소 의 일부 입 대 를 위 한 작업 입 니 다.
대기 열 에 네 개의 속성 이 포함 되 어 있 습 니 다:
front(대열 의 머리)
rear(대기 열의 끝 부분)
maxsize(대기 열 길이,즉 대기 열 요소 개수)
queue(입 대 된 대기 열 요 소 를 모두 저장 하 는 대상)
필드 설명:
1.대기 열 을 초기 화 할 때 하나의 대기 열 을 생 성 합 니 다.하나의 매개 변 수 를 maxsize 초기 화 대기 열 로 입력 하여 팀 의 꼬리 rear 를 0 으로 설정 합 니 다.팀 의 머리 front 도 0 으로 설정 합 니 다.이때 quue 에는 0 번 요소 만 있 고 rear 와 front 가 모두 가리 키 고 있 습 니 다.
2.파티 에 들 어 갈 때 대기 열 이 가득 찼 는 지(front-rear==maxsize)를 판단 해 야 합 니 다.가득 차 면 삽입 할 수 없고,가득 차 지 않 으 면 삽입 할 수 있 습 니 다.삽입 할 때 front 는 스스로 증가 한 다음 에 대열 의 모든 요 소 를 한 자리 앞으로 이동 시 킨 다음 에 새로운 data 대상 을 생 성하 여 팀 의 끝 위치 에 삽입 합 니 다.
3.팀 을 나 갈 때 대기 열 이 비어 있 는 지(front==rear)판단 하고,비어 있 을 때 는 팀 을 나 갈 수 없습니다.비어 있 지 않 으 면 front 가 가리 키 는 대상 을 삭제 하고 front 를 자감 하여 팀 을 완성 합 니 다.
실행 결 과 는 다음 과 같 습 니 다.
샤 오 먀 오:형 들 어 왔 다!
입단 에 성공 하 다
마 수:형 들 어 왔 다!
입단 에 성공 하 다
스 케 이 트:형 들 어 왔 다!
입단 에 성공 하 다
장 세가:내 가 오 자마자 왜 꽉 찼 지?팀 이 꽉 차 서 입 대 를 할 수 없습니다.기다 리 세 요!)
샤 오 먀 오:형 간다!
팀 성공!
주서 효:형 들 어 왔 다!
입단 에 성공 하 다
마 수:형 간다!
팀 성공!
스 케 이 트:형 간다!
팀 성공!
주 서 효:형 간다!
팀 성공!
팀 이 비 면 팀 을 나 갈 수 없다!
팀 이 비 면 팀 을 나 갈 수 없다!
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 PHP 대기 열의 상세 한 통합 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.