PHP SplQueue 队列简介
来源:互联网 发布:结构设计软件 编辑:程序博客网 时间:2024/06/17 08:21
队列是一种特殊的线性表,遵循先进先出原则,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
下面是SplQueue类的实现:
<?php/** * SplQueue继承自SplDoublyLinkedList,关于SplDoublyLinkedList请查看之前的文章 * * @since PHP 5.3 * @link http://blog.csdn.net/wuxing26jiayou/article/details/51862707 */class SplQueue extends SplDoublyLinkedList{ protected $_it_mode = parent::IT_MODE_FIFO; /** * - SplQueue允许使用两种迭代模式 * - SplDoublyLnkedList::IT_MODE_FIFO | SplDoublyLnkedList::IT_MODE_KEEP * - SplDoublyLnkedList::IT_MODE_FIFO | SplDoublyLnkedList::IT_MODE_DELETE * * 默认的模式是 : SplDoublyLnkedList::IT_MODE_FIFO | SplDoublyLnkedList::IT_MODE_KEEP * @param $mode */ public function setIteratorMode($mode) { if ($mode & parent::IT_MODE_LIFO === parent::IT_MODE_LIFO) { throw new RuntimeException("Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen"); } $this->_it_mode = $mode; } /** * 取出队列头部的成员 * * @note dequeue方法等效于父类shift方法 * @see splDoublyLinkedList::shift() */ public function dequeue() { return parent::shift(); } /** * 往队列尾部添加成员 * * @note dequeue方法等效于父类push方法 * @see splDoublyLinkedList::push() */ public function enqueue($data) { return parent::push($data); }}?>
例子说明:
<?phpclass Test { public static function foo() { echo 'Test::foo() called'.'<br/>'; } public static function bar() { echo 'Test::bar() called'.'<br/>'; } public static function msg($msg) { echo "$msg".'<br/>'; }}$queue = new SplQueue();$queue->setIteratorMode(SplQueue::IT_MODE_DELETE);$queue->enqueue(array("Test", "foo"));$queue->enqueue(array("Test", "bar"));$queue->enqueue(array("Test", "msg", "Hi there!"));foreach ($queue as $task) { if (count($task) > 2) { list($class, $method, $args) = $task; $class::$method($args); } else { list($class, $method) = $task; $class::$method(); }}?>
Test::foo() called
Test::bar() called
Hi there!
1 0
- PHP SplQueue 队列简介
- php Splqueue队列
- php标准库 SPL 数据结构之 ---------SplQueue(队列)
- TP5+SPL SplQueue(队列)
- 队列简介
- PHP 队列
- php-队列
- PHP队列
- PHP 队列
- PHP简介
- PHP简介
- PHP简介
- PHP简介
- PHP简介
- PHP 简介
- PHP简介
- php简介
- PHP简介
- Linux修改主机名
- Leetcode 88. Merge Sorted Array (Easy) (cpp)
- UIView 的渐变色呈现
- Linux网络编程实现客户端服务端收发数据功能
- Java Web学习(6):认识JSP
- PHP SplQueue 队列简介
- linux elasticsearch 安装部署
- 正则匹配字符串中的电话号码
- CentOS上安装jdk
- POSTFIX邮件系统搭建
- 优化查询性能
- Unity资源加载与释放
- android关于版本更新问题二
- PAT乙级练习题B1046. 划拳