双向队列的实现

<?php

/**
 * 双向队列
 */
class Deque
{
    private $queue = array();

    /**
     * 队尾入队
     *
     * @param mixed $value 入队元素
     * @return int 队列长度
     */
    public function inRear($value)
    {
        return array_push($this->queue, $value);
    }

    /**
     * 队头出队
     *
     * @return mixed 出队元素,若队列为空则返回null
     */
    public function outFront()
    {
        return array_shift($this->queue);
    }

    /**
     * 队头入队
     *
     * @param mixed $value 入队元素
     * @return int 队列长度
     */
    public function inFront($value)
    {
        return array_unshift($this->queue, $value);
    }

    /**
     * 队尾出队
     *
     * @return mixed 出队元素,若队列为空则返回null
     */
    public function outRear()
    {
        return array_pop($this->queue);
    }

    /**
     * 获取队头
     *
     * @return mixed 队头元素,若队列为空则返回false
     */
    public function getFront()
    {
        return reset($this->queue);
    }

    /**
     * 获取队尾
     *
     * @return mixed 队尾元素,若队列为空则返回false
     */
    public function getRear()
    {
        return end($this->queue);
    }

    /**
     * 获取整个队列
     *
     * @return array
     */
    public function getQueue()
    {
        return $this->queue;
    }
}

$deque = new Deque();

$deque->inFront('张三');
$deque->inRear('李四');

print_r($deque->getQueue());

Copyright © 2024 码农人生. All Rights Reserved