当前位置:首页 > PHP

php环行队列实现

2026-02-16 03:00:15PHP

环形队列的实现原理

环形队列(Circular Queue)是一种基于数组的先进先出(FIFO)数据结构,通过维护头尾指针实现循环利用空间。当尾部到达数组末尾时,会绕回到数组开头,避免普通队列的假溢出问题。

环形队列的关键操作

初始化
定义队列大小、头指针(front)、尾指针(rear)和存储数组。初始时 frontrear 均为 0。

php环行队列实现

入队(enqueue)
检查队列是否已满,若未满则将元素放入 rear 位置,并更新 rear = (rear + 1) % capacity

php环行队列实现

出队(dequeue)
检查队列是否为空,若不为空则取出 front 位置的元素,并更新 front = (front + 1) % capacity

判空与判满

  • 空队列条件:front == rear
  • 满队列条件:(rear + 1) % capacity == front(需预留一个空位避免歧义)

PHP 实现代码示例

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

    public function __construct($size) {
        $this->capacity = $size + 1; // 预留一个空位
        $this->queue = array_fill(0, $this->capacity, null);
        $this->front = $this->rear = 0;
    }

    public function enqueue($item) {
        if ($this->isFull()) {
            throw new RuntimeException("Queue is full");
        }
        $this->queue[$this->rear] = $item;
        $this->rear = ($this->rear + 1) % $this->capacity;
    }

    public function dequeue() {
        if ($this->isEmpty()) {
            throw new RuntimeException("Queue is empty");
        }
        $item = $this->queue[$this->front];
        $this->front = ($this->front + 1) % $this->capacity;
        return $item;
    }

    public function isEmpty() {
        return $this->front == $this->rear;
    }

    public function isFull() {
        return ($this->rear + 1) % $this->capacity == $this->front;
    }
}

// 使用示例
$queue = new CircularQueue(3);
$queue->enqueue(1);
$queue->enqueue(2);
echo $queue->dequeue(); // 输出 1
$queue->enqueue(3);

注意事项

  • 数组大小需为 实际容量 + 1,以区分空和满的状态。
  • 指针更新时使用取模运算实现环形逻辑。
  • 实际应用中可扩展动态扩容功能,但需重新分配数组并调整指针。

性能分析

  • 时间复杂度:入队和出队均为 O(1)。
  • 空间复杂度:O(n),n 为队列容量。

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

相关文章

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searchT…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…