当前位置:首页 > PHP

php实现双向队列

2026-02-13 16:45:59PHP

PHP 实现双向队列

在 PHP 中,双向队列(Deque)可以通过数组或 SplDoublyLinkedList 类实现。以下是两种常见方法:

使用数组实现

数组可以通过 array_pusharray_poparray_shiftarray_unshift 函数模拟双向队列的操作:

$deque = [];

// 从队尾插入元素
array_push($deque, 'A');
array_push($deque, 'B');

// 从队头插入元素
array_unshift($deque, 'C');

// 从队尾弹出元素
$last = array_pop($deque);

// 从队头弹出元素
$first = array_shift($deque);

使用 SplDoublyLinkedList 类

PHP 的 SPL(标准 PHP 库)提供了 SplDoublyLinkedList 类,原生支持双向队列操作:

$deque = new SplDoublyLinkedList();

// 从队尾插入元素
$deque->push('A');
$deque->push('B');

// 从队头插入元素
$deque->unshift('C');

// 从队尾弹出元素
$last = $deque->pop();

// 从队头弹出元素
$first = $deque->shift();

性能比较

  • 数组实现简单,但在头部操作(array_shift/array_unshift)时性能较差,因为需要重新索引。
  • SplDoublyLinkedList 专为双向操作优化,适合频繁的头部和尾部操作。

自定义双向队列类

如果需要更封装化的实现,可以创建一个自定义类:

php实现双向队列

class Deque {
    private $list;

    public function __construct() {
        $this->list = new SplDoublyLinkedList();
    }

    public function addFront($item) {
        $this->list->unshift($item);
    }

    public function addRear($item) {
        $this->list->push($item);
    }

    public function removeFront() {
        return $this->list->shift();
    }

    public function removeRear() {
        return $this->list->pop();
    }

    public function isEmpty() {
        return $this->list->isEmpty();
    }

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

使用示例

$deque = new Deque();
$deque->addFront('A');
$deque->addRear('B');
echo $deque->removeFront(); // 输出 'A'
echo $deque->removeRear();  // 输出 'B'

标签: 队列双向
分享给朋友:

相关文章

vue数据实现双向绑定

vue数据实现双向绑定

Vue 数据双向绑定的实现原理 Vue 的数据双向绑定主要通过 v-model 指令实现,结合了数据绑定和事件监听。以下是核心实现方式: 使用 v-model 指令 v-model 是语法糖,自动绑…

vue 双向绑定实现

vue 双向绑定实现

Vue 双向绑定的实现原理 Vue 的双向绑定主要通过数据劫持结合发布者-订阅者模式实现,核心是 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)。 数据…

vue自己实现双向绑定

vue自己实现双向绑定

实现 Vue 双向绑定的核心原理 双向绑定的核心是通过数据劫持结合发布-订阅模式实现的。主要涉及 Object.defineProperty 或 Proxy 来监听数据变化,并通过观察者模式通知视图更…

react如何双向数据绑定

react如何双向数据绑定

双向数据绑定的实现方法 React 本身是单向数据流的设计理念,但可以通过以下方式实现类似双向数据绑定的效果: 受控组件方式 通过 value 和 onChange 事件实现双向绑定: funct…

react实现双向绑定

react实现双向绑定

React 实现双向绑定的方法 React 本身是单向数据流框架,但可以通过以下方式模拟双向绑定效果: 受控组件方式 通过 value 和 onChange 实现表单元素与状态的同步: f…

react实现双向绑定原理

react实现双向绑定原理

React 双向绑定原理 React 本身是单向数据流的设计理念,但可以通过特定方式实现类似双向绑定的效果。以下是常见的实现方法: 受控组件方式 通过 value 和 onChange 属性控制表单…