1. 程式人生 > >PHP簡單雙向佇列實現

PHP簡單雙向佇列實現

這是一個簡單的PHP雙向佇列的實現:

<?php 
	class Deque{

		public $queue = array();

		/**
		 * 尾部入對
		 * @param [type] $value [description]
		 */
		public function addLast($value){
			return array_push($this->queue,$value);
		}

		/**
		 * 尾部出隊
		 * @return [type] [description]
		 */
		public function removeLast(){
			return array_pop($this->queue);
		}

		/**
		 * 頭部入隊
		 * @param [type] $value [description]
		 */
		public function addFirst($value){
			return array_unshift($this->queue, $value);
		}

		/**
		 * 頭部出隊
		 * @return [type] [description]
		 */
		public function removeFirst(){
			return array_shift($this->queue);
		}

		/**
		 * 清空佇列
		 * @return [type] [description]
		 */
		public function makeEmpty(){
			unset($this->queue);
		}

		/**
		 * 獲取列頭
		 * @return [type] [description]
		 */
		public function getFirst(){
			return reset($this->queue);
		}

		/**
		 * 獲取列尾
		 * @return [type] [description]
		 */
		public function getLast(){
			return end($this->queue);
		}

		/**
		 * 獲取長度
		 * @return [type] [description]
		 */
		public function getLength(){
			return count($this->queue);
		}
	}
 ?>


使用示例:

<?php 
	require_once('testQueue.php');

	$queue = new Deque();

	$queue->addLast('1');
	$queue->addLast('2');
	$queue->addLast('3');
	print_r('佇列中的元素:'.json_encode($queue->queue));

	$queue->addLast('4');
	print_r('尾部入隊:'.json_encode($queue->queue));

	$queue->removeLast();
	print_r('尾部出隊:'.json_encode($queue->queue));

	$queue->addFirst('0');
	print_r('頭部入隊:'.json_encode($queue->queue));

	$queue->removeFirst();
	print_r('頭部出隊:'.json_encode($queue->queue));

	print_r('獲取列頭:'.json_encode($queue->getFirst()));
	print_r('獲取列尾:'.json_encode($queue->getLast()));
	print_r('獲取長度:'.json_encode($queue->getLength()));

	$queue->makeEmpty();
	print_r('清空佇列:'.json_encode(isset($queue->queue)));
 ?>