PHP与数据结构之循环队列

<?php
/*
 * use PHP to write queue
 * 队列的顺序结构(循环队列,防止假溢出)
 */
class queue{
    //存储空间
    private $data;
    //队头"指针"
    private $front;
    //队尾"指针"
    private $rear;
    //定义最大容量
    const MAX=10;
    //定义数量
    private static $count;
    //初始化循序队列
    public function __construct()
    {
        $this->data=array();
        $this->front=self::MAX;
        $this->rear=self::MAX;
        self::$count=0;
    }
    /*
     * 入队列
     * insert 为需要插入的元素
     */

    public function inQueue($insert)
    {
        if (self::$count==self::MAX){
            echo "队列已满";
        }else{
            //
            $this->rear=($this->rear+1)%self::MAX;
            //将插入元素放入data            $this->data[$this->rear]=$insert;
            //计数器加一
            self::$count++;
        }
    }
    //出队列
    public function outQueue()
    {
        //判断队列是否为空
        if (self::$count==0){
            echo "队列为空,无法出队列";
        }else{
            //读出队列头元素
            $this->front=($this->front+1)%self::MAX;
            echo $this->data[$this->front];
            unset($this->data[$this->front]);
            //计数器减一
            self::$count--;
        }
    }
    //判断队列是否为空队列
    public function emptyQueue()
    {
        if (self::$count==0)
            echo "队列为空队列";
    }
    //显示队列元素
    public function showQueue()
    {
        var_dump($this->data);
    }
}
/*$obj=new queue();
$obj->inQueue(1);
$obj->inQueue(2);
$obj->showQueue();
$obj->outQueue();
$obj->showQueue();*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值