溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP實(shí)現(xiàn)循環(huán)隊(duì)列(順序結(jié)構(gòu))

發(fā)布時(shí)間:2020-07-04 23:37:40 來(lái)源:網(wǎng)絡(luò) 閱讀:2711 作者:jackdongting 欄目:開(kāi)發(fā)技術(shù)

隊(duì)列:先進(jìn)先出,是一個(gè)應(yīng)用很廣泛的數(shù)據(jù)結(jié)構(gòu),不管是存儲(chǔ)還是消息,還是待執(zhí)行任務(wù)等等,生活以及軟件中使用的栗子比比皆是。


不多說(shuō)直接上代碼,參考多家,覺(jué)得這個(gè)是最符合中心思想的。為了區(qū)分是否滿隊(duì)列,我們還是j決定使用空一格是滿的,示意圖如下

PHP實(shí)現(xiàn)循環(huán)隊(duì)列(順序結(jié)構(gòu))



直接上代碼

//循環(huán)隊(duì)列,順序存儲(chǔ)
class queue{
	private $data;
	private $front;
	private $rear;
	
	//定義最大容量
    const MAX=5;
    //定義數(shù)量
	 //初始化隊(duì)列,頭指針和尾指針都只指向0,而且我們的滿規(guī)定是空一個(gè)。
	function __construct(){
		$this->data=array();
		$this->front=0;
		$this->rear=0;
		
		echo "隊(duì)列準(zhǔn)備ok";
	}
	//一個(gè)有趣的小公式,因?yàn)槲覀円?guī)定中間間隔一個(gè)就是滿了,原理和示意圖用圖片
	public function queueLength(){
		echo ($this->rear-$this->front+self::MAX)%self::MAX;
	}
	
	//入隊(duì)列
	//沒(méi)必要加入本隊(duì)列參數(shù),用$this
	public function inQueue($e){
		if(($this->rear+1)%(self::MAX)==$this->front){
			echo '隊(duì)列已經(jīng)滿了';die;
		}
		
		$this->data[$this->rear]=$e;
		$this->rear=($this->rear+1)%(self::MAX);
		
		echo 'ok';
	}
	
	public function deQueue(){
		if($this->front==$this->rear){
			echo '隊(duì)列是空的';die;
		}
		//var $tmp;
		//$tmp =
		$this->data[$this->front]='';
		$this->front = ($this->front+1)%self::MAX;
		//unset($this->data[$this->front]);
		
		echo 'ok';
	}
}

測(cè)試代碼如下:

	$obj=new queue();
$obj->inQueue(1);
$obj->inQueue(2);
var_dump($obj);
$obj->deQueue();
var_dump($obj);
$obj->inQueue(3);
var_dump($obj);
$obj->inQueue(4);
var_dump($obj);
$obj->inQueue(5);
var_dump($obj);
$obj->deQueue();
var_dump($obj);
$obj->deQueue();
var_dump($obj);
$obj->deQueue();
var_dump($obj);
$obj->deQueue();
var_dump($obj);
$obj->queueLength();
$obj->inQueue(1);
var_dump($obj);
$obj->inQueue(2);
var_dump($obj);

有一首小詩(shī)我覺(jué)得作者寫(xiě)的很好,增加點(diǎn)文學(xué)氣息

PHP實(shí)現(xiàn)循環(huán)隊(duì)列(順序結(jié)構(gòu))

PHP實(shí)現(xiàn)循環(huán)隊(duì)列(順序結(jié)構(gòu))



謝謝,愿法界眾生,皆得安樂(lè)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI