PHP雙向隊列,雙端隊列代碼
<?php /**
- User: jifei
- Date: 2013-07-30
- Time: 23:12 */ /**
- PHP實現雙向隊列,雙端隊列
- 雙端隊列(deque,全名double-ended queue)是一種具有隊列和棧性質的數據結構。
- 雙端隊列中的元素可以從兩端彈出,插入和刪除操作限定在隊列的兩邊進行。
*/
class Deque
{
public $queue=array();
/**
- 構造函數初始化隊列
*/
public function __construct($queue=array())
{
if(is_array($queue))
{
} } /**$this->queue=$queue;
- 獲取第一個元素 */ public function front() { return reset($this->queue); } /**
- 獲取最后一個元素 */ public function back() { return end($this->queue); } /**
- 判斷是否為空 */ public function is_empty() { return empty($this->queue); } /**
- 隊列大小 */ public function size() { return count($this->queue); } /**
- 插入到尾 */ public function push_back($val) { array_push($this->queue,$val); } /**
- 插入到頭 */ public function push_front($val) { array_unshift($this->queue,$val); } /**
- 移除最后一個元素 */ public function pop_back() { return array_pop($this->queue); } /**
- 移除第一個元素 */ public function pop_front() { return array_shift($this->queue); } /**
- 清空隊列
*/
public function clear()
{
$this->queue=array();
}
}
//初始化一個雙向隊列
$deque=new Deque(array(1,2,3,4,5));
echo $deque->size().PHP_EOL;
echo $deque->is_empty().PHP_EOL;
echo $deque->front().PHP_EOL;
echo $deque->back().PHP_EOL;
echo PHP_EOL;
//彈出元素測試
echo $deque->pop_back().PHP_EOL;
echo $deque->pop_front().PHP_EOL;
echo $deque->size().PHP_EOL;
echo PHP_EOL;
$deque->push_back('a').PHP_EOL;
$deque->push_front(0).PHP_EOL;
echo PHP_EOL;
//插入測試
echo $deque->front().PHP_EOL;
echo $deque->back().PHP_EOL;
echo $deque->size().PHP_EOL;
echo PHP_EOL;
//清空測試
$deque->clear();
echo $deque->is_empty();</pre>
- 構造函數初始化隊列
*/
public function __construct($queue=array())
{
if(is_array($queue))
{
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!