用 PHP 实现一个双向队列

class DEQueue {
    //存储
    protected $_storage = array();

    //入头
    public function unshift($element)
    {
        return array_unshift($this->_storage, $element);
    }

    //入尾
    public function push($element)
    {
        return array_push($this->_storage, $element);
    }

    //出尾
    public function pop()
    {
        return array_pop($this->_storage);
    }

    //出头
    public function shift()
    {
        return array_shift($this->_storage);
    }

    //长度
    public function length()
    {
        return count($this->_storage);
    }
}
时间: 2024-08-07 12:25:58

用 PHP 实现一个双向队列的相关文章

C++ Double Ended Queues(双向队列)

双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 at() 返回指定的元素 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 返回真如果双向队列为空 end() 返回指向尾部的迭代器 erase() 删除一个元素 front() 返回第一个元素 get_allocator()

PHP双向队列,双端队列代码

<?php /**  * User: jifei  * Date: 2013-07-30  * Time: 23:12 */ /**  * PHP实现双向队列,双端队列  * 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构.  * 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行.  */ class Deque {     public $queue=array();     /**      * 构造函数初始化队列     

Python collections系列之双向队列

双向队列(deque) 一个线程安全的双向队列 1.创建一个双向队列 import collections d = collections.deque() d.append('1') d.appendleft('10') d.appendleft('a') d.appendleft('1') 2.查看双向队列 print(d) 输出结果: deque(['1', 'a', '10', '1']) 3.查看双向队列的方法 >>> dir(d) ['__class__', '__copy__

C++ Deque(双向队列)

  C++ Deque(双向队列)是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪.向deque 两端添加或删除元素的开销很小.它不需要重新分配空间,所以向末端增加元素比vector 更有效. 实际上,deque 是对vector 和list 优缺点的结合,它是处于两者之间的一种容器. Deque 的特点: (1) 随机访问方

poj 2905 双向队列(待补充)

Parallel Computer Simulator Description Programs executed concurrently on a uniprocessor system appear to be executed at the same time, but in reality the single CPU alternates between the programs, executing some number of instructions from each pro

deque双向队列

对于双向队列,与队列queue以及vector容器的区别就在于,名字不同,也就是它是双向的,可以从头开始操作,也可以从末尾开始操作. 双向队列的常用方法跟队列queue差不多: 头文件: #include<deque> 函数: 构造/析构 deque<int>q  构造一个空的双向队列 deque<int>q(q1)  构造q,并复制q1 deque<int>q(n)  创建deque,含有n个数据,数据均由缺省构造函数产生 deque<int>

算法学习之基础(背包 列队 栈) 习题1.3.33泛型双向队列

前几天写的.. 1 package gh; 2 3 import java.util.Iterator; 4 5 /** 6 * 泛型双向队列(双向链表实现) 7 * @author ganhang 8 * 9 */ 10 public class Deque<T> implements Iterable<T> { 11 private Node first; 12 private Node last; 13 private int n=0; 14 public Deque(){

python的collection系列-双向队列和单向队列

单向队列:数据先进先出 双向队列:可进可出 双向队列部分源码: 1 class deque(object): 2 """ 3 deque([iterable[, maxlen]]) --> deque object 4 5 Build an ordered collection with optimized access from its endpoints. 6 """ 7 def append(self, *args, **kwargs

STL --&gt; deque双向队列

deque简介 deque是双向开口的连续性存储空间.虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制把这一块一块的存储区虚拟地连在一起. 它首次插入一个元素,默认会动态分配512字节空间,当这512字节空间用完后,它会再动态分配自己另外的512字节空间,然后虚拟地连在一起.deque 的这种设计使得它具有比vector复杂得多的架构.算法和迭代器设计.它的性能损失比之vector,