PHP實現雙向佇列

2021-08-13 23:00:03 字數 2658 閱讀 2010

作為開發人員,經常會在專案中遇使用到佇列,而有時候需要自己單獨實現佇列機制,而也有部分新手對與佇列認識不清晰,本教程,從**上,直觀的展示了佇列的實現 和使用過程。

<?php/**

*@function

雙向佇列實現**

*@author

yg-w**

@date

2017-12-23**/

classqueue

return self::

$instance;}

/***

@function

入隊-首部**

@param

$val

** @desc:

* 需要注意的是,要向佇列的首位插入新的值,則需要先將該佇列的所有元素位置向後移

** 動一位,完成後,在最後空下來的第乙個位置插入新的值。**

@return

boolean

*/public functionpush_first

($val

)/**

*@function

入隊-尾部**

@param

$val**

@return

boolean**/

public functionpush_last

($val

)/**

*@function

出隊-首位

** @desc

* 需要注意的是,每次從首位置刪除乙個元素後,需要將佇列中所有剩餘的元素向前移動一位。

*

*

*

@return

string

*/public functionpop_first

()/**

*@function

出隊-尾部**

@return

string**/

public functionpop_last

()/****

@function

檢視佇列當前情況( 僅用於測試 )**

@return

array**/

public functionget_list()}

//例項化佇列類

$queue

= queue::

getinstance();

/*** 從佇列首位入隊: $queue->push_first()

* 從佇列尾部入隊: $queue->push_last()

*///向佇列首位插入20次

for($i=

1;$i<=20;

$i++)

/*** 從前到後出隊: $queue->pop_first()

* 從後到前出隊: $queue->pop_last()

*///從尾部進行出隊操作 : 當佇列中所有元素出隊後,結束執行

while(

$p_val

= $queue

->

pop_last

())

var_dump(

$queue

->

get_list

());

執行結果:入隊

: 1入隊: 2入隊

: 3入隊: 4入隊

: 5入隊: 6入隊

: 7入隊: 8入隊

: 9入隊:

10入隊

: 11

入隊:

12入隊

: 13

入隊:

14入隊

: 15

入隊:

16入隊

: 17

入隊:

18入隊

: 19

入隊:

20出隊: 1

出隊: 2出隊

: 3出隊: 4出隊

: 5出隊: 6出隊

: 7出隊: 8出隊

: 9出隊:

10出隊

: 11

出隊:

12出隊

: 13

出隊:

14出隊

: 15

出隊:

16出隊

: 17

出隊:

18出隊

: 19

出隊:

20array(0)

php 簡單雙向佇列

雙向佇列 classdouble queue 從佇列尾部彈出 public functionfront remove 從佇列尾部壓入 public functionrear add node 從佇列尾部彈出 public functionrear remove 獲取佇列長度 public funct...

php簡單的雙向佇列

class doublequeue 得到陣列的總大小 public function count 將乙個單元壓入陣列尾部 public function queuepush data 將乙個單元壓入陣列開頭 public function queueunshift data 從陣列最後乙個移出 pu...

Deque 雙向佇列 Swift實現

可以像普通佇列一樣,擁有從隊首出隊 從隊尾入隊的特性外,雙向佇列,也可以從隊首入隊,從隊尾出隊。struct deque var count int 從隊尾入隊 mutating func enqueue element t 從隊首入隊 mutating func enqueuefront elem...