Rumah  >  Artikel  >  php教程  >  PHP双向队列,双端队列代码

PHP双向队列,双端队列代码

大家讲道理
大家讲道理asal
2016-11-09 14:29:411520semak imbas

<?php
/**
 * 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(&#39;a&#39;).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();


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn