当前位置:首页 > PHP

PHP 实现循环队列

2026-03-13 08:04:26PHP

循环队列的概念

循环队列是一种线性数据结构,其操作基于先进先出(FIFO)原则。与普通队列不同,循环队列通过将队列的尾部和头部连接起来,形成一个环形结构,从而更高效地利用存储空间。

循环队列的实现思路

  1. 固定大小的数组:使用数组存储队列元素,并维护两个指针(front 和 rear)分别指向队列的头部和尾部。
  2. 模运算:通过模运算实现指针的循环移动,避免数组越界。
  3. 判空与判满:通过 front 和 rear 的关系判断队列是否为空或已满。

PHP 实现代码

以下是一个完整的 PHP 循环队列实现:

PHP 实现循环队列

class CircularQueue {
    private $queue;
    private $front;
    private $rear;
    private $size;
    private $capacity;

    public function __construct($capacity) {
        $this->capacity = $capacity;
        $this->queue = array_fill(0, $capacity, null);
        $this->front = -1;
        $this->rear = -1;
        $this->size = 0;
    }

    public function enqueue($item) {
        if ($this->isFull()) {
            return false;
        }
        if ($this->isEmpty()) {
            $this->front = 0;
        }
        $this->rear = ($this->rear + 1) % $this->capacity;
        $this->queue[$this->rear] = $item;
        $this->size++;
        return true;
    }

    public function dequeue() {
        if ($this->isEmpty()) {
            return null;
        }
        $item = $this->queue[$this->front];
        $this->queue[$this->front] = null;
        if ($this->front == $this->rear) {
            $this->front = -1;
            $this->rear = -1;
        } else {
            $this->front = ($this->front + 1) % $this->capacity;
        }
        $this->size--;
        return $item;
    }

    public function isEmpty() {
        return $this->size == 0;
    }

    public function isFull() {
        return $this->size == $this->capacity;
    }

    public function getSize() {
        return $this->size;
    }

    public function peek() {
        if ($this->isEmpty()) {
            return null;
        }
        return $this->queue[$this->front];
    }
}

使用示例

$queue = new CircularQueue(3);
$queue->enqueue(1);
$queue->enqueue(2);
$queue->enqueue(3);
echo $queue->dequeue(); // 输出 1
$queue->enqueue(4);
echo $queue->peek(); // 输出 2

关键点说明

  • 初始化:构造函数中设置队列容量,并初始化数组和指针。
  • 入队(enqueue):检查队列是否已满,更新 rear 指针并插入元素。
  • 出队(dequeue):检查队列是否为空,返回 front 指针指向的元素并更新指针。
  • 判空与判满:通过 size 变量或 front/rear 指针的关系判断队列状态。

通过这种方式,可以高效地实现循环队列的基本操作。

标签: 队列PHP
分享给朋友:

相关文章

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

vue实现队列消息

vue实现队列消息

Vue 实现队列消息 在 Vue 中实现队列消息功能,可以通过以下方法实现一个简单的消息队列系统,用于显示和管理临时通知(如成功、错误提示)。 使用 Vuex 管理消息队列 创建一个 Vuex st…

php redis实现消息队列

php redis实现消息队列

使用 PHP 和 Redis 实现消息队列 Redis 是一个高性能的键值存储系统,支持多种数据结构,如列表(List)、发布/订阅(Pub/Sub)等,非常适合实现消息队列。以下是几种常见的实现方式…

php 实现消息队列

php 实现消息队列

PHP 实现消息队列的方法 使用 Redis 实现消息队列 Redis 的 List 结构可以用于实现简单的消息队列。通过 LPUSH 和 RPOP 命令可以实现先进先出的队列。 $redis =…

PHP实现numpy

PHP实现numpy

在PHP中实现类似NumPy的功能,可以通过结合PHP的数组操作、扩展库或第三方工具来模拟部分功能。以下是几种常见方法: 使用PHP数组和内置函数 PHP的数组支持多维操作,结合内置数学函数可实现基…

PHP实现级差

PHP实现级差

级差的概念 级差通常指按照不同等级或范围计算差异值,例如阶梯定价、绩效奖金等场景。PHP中可通过条件判断、循环或数学运算实现。 基础条件判断法 通过if-else或switch结构直接划分等级区间:…