溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP實現循環隊列(順序結構)

發布時間:2020-07-04 23:37:40 來源:網絡 閱讀:2738 作者:jackdongting 欄目:開發技術

隊列:先進先出,是一個應用很廣泛的數據結構,不管是存儲還是消息,還是待執行任務等等,生活以及軟件中使用的栗子比比皆是。


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

PHP實現循環隊列(順序結構)



直接上代碼

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

測試代碼如下:

	$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);

有一首小詩我覺得作者寫的很好,增加點文學氣息

PHP實現循環隊列(順序結構)

PHP實現循環隊列(順序結構)



謝謝,愿法界眾生,皆得安樂

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女