阅读445 返回首页    go Php编程


PHP SPL的常用数据结构

点击播放 GIF/21K

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

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

编辑 | 码哥

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

最后更新:2017-10-09 02:47:12

  上一篇:go php的垃圾回收机制——引用计数
  下一篇:go MultiHttp:高性能的 PHP 封装的 HTTP Restful 多线程并发请求库