詳解PHP佇列的實現

2022-09-26 06:18:14 字數 2002 閱讀 4344

佇列是一種特殊的線性表,它只允許在表的前端,可以稱之為front,進行刪除操作;而在表的後端,可以稱之為rear進行插入操作。佇列和堆疊一樣,是一種操作受限制的線性表,和堆疊不同之處在於:佇列是遵循「先進先出」原則,而堆疊遵循的是「先進後出」原則。佇列進行插入程式設計客棧操作的端稱為隊尾,進行刪除操作的稱為隊頭,只允許在隊尾進行插入操作,在隊頭進行刪除操作。

php/*** php佇列演算法

* * create on 2010-6-4

* author been

* qq:281443751

* email:[email protected]

**/class data

public function getdata()

public function __destruct()

}class queue

//初始化佇列

private function initq($size)

//判斷隊空

public function qisempty()

//判斷隊滿

public function qisfull()

//獲取隊首資料

public function getfrontdate()

//入隊

public function inq($data)

$this->queue[$this->rear+1]=new data($data);

//print_r($this->queue);

//echo $this->front;

echo '入隊成功!

'; }

} //出隊

public function outq()

}}$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,此時queue中只有0號元素,並且rear和front都指向它。

2.入隊時,先需要判斷佇列是否已滿(front-rear == maxsize),如果已滿不可在插入,如果未滿則允許插入。插入時,front自增,然後依次讓佇列所有元素向前移動一位(讓出隊尾位置以便插入新元素),然後生成新的data物件插入到隊尾位置。

3.出隊時,判斷佇列是否為空(front == rear),如果為空時,無法出隊。如果不為空時,刪除front指向的物件,並且front自減,完成出隊。

執行結果如下:

小苗:哥進隊了!

入隊成功

馬帥:哥進隊了!

入隊成功

溜冰:哥進隊了!

入隊成功

張世佳:我一來咋就滿了!(隊滿不能入隊,請等待!)

小苗:哥走了!

出隊成功!

周瑞曉:哥進隊了!

入隊成功

馬帥:哥走了!

出隊成功!

溜冰:哥走了!

出隊成功!

周瑞曉:哥走了!

出隊成功!

隊空不能出隊!

隊空不能出隊!

本文標題: 詳解php佇列的實現

本文位址: /wangluo/php/254387.html

php使用佇列 php實現佇列

佇列 queue 滿足先進先出 fifo 的規則 下面使用php實現乙個簡單的迴圈佇列模型 初始狀態的佇列,佇列長度為0,隊頭和隊尾的指標相同均位於佇列的開始 入隊操作 隊尾指標向後移動,長度加一 出隊操作 隊頭指標向後移動,長度減一 迴圈佇列特點 佇列大小固定,佇列所開闢的記憶體空間可迴圈使用,指...

php實現佇列

雙向佇列的實現 class doubleendedqueue public function push element public function pop public function inject element public function eject 例項化該類,測試下 a new d...

PHP佇列的實現 演算法

此佇列演算法中有兩個類乙個是data類,這個類是存放資料 第二個是queue也就是佇列類這個就是佇列的一些操作。首先佇列裡包含front 佇列的頭,也就是出隊是要出去的 rear 佇列的尾部在這裡永遠指向0 queue 存放所有入隊的data對像,queue中預設存在乙個元素當空時front和rea...