<table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_66330"> <div class="blockcode"> <div id="code_Mp0"><ol> <li><?php<li>/**<li> * User: jifei<li> * Date: 2013-07-30<li> * Time: 23:12<li>*/<li>/**<li> * PHP实现双向队列,双端队列<li> * 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。<li> * 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。<li> */<li>class Deque<li>{<li> public $queue=array();<li> /**<li> * 构造函数初始化队列<li> */<li> public function __construct($queue=array())<li> {<li> if(is_array($queue))<li> {<li> $this->queue=$queue;</li> <li> }</li> <li> }</li> <li> /**</li> <li> * 获取第一个元素</li> <li> */</li> <li> public function front()</li> <li> {</li> <li> return reset($this->queue);</li> <li> }</li> <li> /**</li> <li> * 获取最后一个元素</li> <li> */</li> <li> public function back()</li> <li> {</li> <li> return end($this->queue);</li> <li> }</li> <li> /**</li> <li> * 判断是否为空</li> <li> */</li> <li> public function is_empty()</li> <li> {</li> <li> return empty($this->queue);</li> <li> }</li> <li> /**</li> <li> * 队列大小</li> <li> */</li> <li> public function size()</li> <li> {</li> <li> return count($this->queue);</li> <li> }</li> <li> /**</li> <li> * 插入到尾</li> <li> */</li> <li> public function push_back($val)</li> <li> {</li> <li> array_push($this->queue,$val);</li> <li> }</li> <li> /**</li> <li> * 插入到头</li> <li> */</li> <li> public function push_front($val)</li> <li> {</li> <li> array_unshift($this->queue,$val);</li> <li> }</li> <li> /**</li> <li> * 移除最后一个元素</li> <li> */</li> <li> public function pop_back()</li> <li> {</li> <li> return array_pop($this->queue);</li> <li> }</li> <li> /**</li> <li> * 移除第一个元素</li> <li> */</li> <li> public function pop_front()</li> <li> {</li> <li> return array_shift($this->queue);</li> <li> }</li> <li> /**</li> <li> * 清空队列</li> <li> */</li> <li> public function clear()</li> <li> {</li> <li> $this->queue=array();</li> <li> }</li> <li>}</li> <li>//初始化一个双向队列</li> <li>$deque=new Deque(array(1,2,3,4,5));</li> <li>echo $deque->size().PHP_EOL;</li> <li>echo $deque->is_empty().PHP_EOL;</li> <li>echo $deque->front().PHP_EOL;</li> <li>echo $deque->back().PHP_EOL;</li> <li>echo PHP_EOL;</li> <li>//弹出元素测试</li> <li>echo $deque->pop_back().PHP_EOL;</li> <li>echo $deque->pop_front().PHP_EOL;</li> <li>echo $deque->size().PHP_EOL;</li> <li>echo PHP_EOL;</li> <li>$deque->push_back('a').PHP_EOL;</li> <li>$deque->push_front(0).PHP_EOL;</li> <li>echo PHP_EOL;</li> <li>//插入测试</li> <li>echo $deque->front().PHP_EOL;</li> <li>echo $deque->back().PHP_EOL;</li> <li>echo $deque->size().PHP_EOL;</li> <li>echo PHP_EOL;</li> <li>//清空测试</li> <li>$deque->clear();</li> <li>echo $deque->is_empty();</li> </ol></div> <em onclick="copycode($('code_Mp0'));">复制代码</em> </div> <br> </td></tr></table> <div class="ptg mbm mtn"> PHP</div> <div id="comment_66330" class="cm"> </div> <div id="post_rate_div_66330"></div> <br><br>