微信号:programmer_club

介绍:程序员第一自媒体,与你探讨码农人生路上遇到的各类泛技术话题,定期为你推荐码农人生思考、感悟以及启迪!

PHP SPL的常用数据结构

2017-10-08 20:34 程序员之家


    堆(Heap)就是为了实现优先队列而设计的一种数据结构,它是通过构造二叉堆(二叉树的一种)实现。根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。

    如下:最小堆(任意节点的优先级不小于它的子节点)



    PHP的SPL提供了些数据结构基本类型的实现,虽然我们可以使用传统的变量类型来描述数据结构,例如用数组来描述堆栈(Strack)然后使用对应的方式 pop 和 push(array_pop()、array_push()),但你得时刻小心,因为毕竟它们不是专门用于描述数据结构的,一次误操作就有可能破坏该堆栈。而SPL的 SplStack 对象则严格以堆栈的形式描述数据,并提供对应的方法。同时,这样的代码应该也能理解它在操作堆栈而非某个数组,从而能让你的同伴更好的理解相应的代码,并且它更快。 


    栈的实现

    $stack = new SplStack(); 
    //入栈
    $stack->push('a');
    $stack->push('b');
    //出栈
    echo $stack->pop();
    echo $stack->pop();

    队列的实现

    $queue = new SplQueue();
    //入队列
    $queue->enqueue('a');
    $queue->enqueue('b');
    $queue->enqueue('c');
    //出队列
    echo $queue->dequeue();
    echo $queue->dequeue(); 
    echo $queue->dequeue();

    最小堆的实现

    $heap = new SplMinHeap();
    //插入到堆
    $heap->insert('a'); 
    $heap->insert('b');
    //从堆中提取数据
    echo $heap->extract();
    echo $heap->extract();

    固定长度的数组

    $array = new SplFixedArray(5);
    $array[1] = 5;
    var_dump($array);



来源:本文由程序员之家整合自网络

编辑 | 码哥

图片源于网络,版权归原作者所有

 
程序员之家 更多文章 程序员的八个级别,你属于哪个级别? 幽默?愤怒!!辱华游戏"肮脏的中餐馆"在网上炸了! 马云又亮大招?阿里将建首个智能加油站,自动识别车主淘宝ID 意大利女程序员没新郎 办“单身婚礼”嫁给自己 欧洲刮起性爱机器人风:用户体验称比真人舒服
猜您喜欢 Cuckoo Filter:设计与实现(一) 几百件潮T送你,你会要么? 【真TMD有才】吐槽比屈原还屈的八大互联网职业 洪荒之力 -- 智能聊天机器人大放送! 没经验的测试应届毕业生都是怎么找到工作的?