PHP SPL的常用数据结构

百家 作者:程序员之家 2017-10-08 13:29:22


    堆(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);



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

编辑 | 码哥

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

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接