数据结构

  1. 双链表
    双链表 (DLL) 是一个链接到两个方向的节点列表。当底层结构是 DLL 时, 迭代器的操作、对两端的访问、节点的添加或删除都具有 O (1) 的开销。因此, 它为栈和队列提供了一个合适的实现。
  • SplDoublyLinkedList 双向链表
    • SplStack 栈
$stack = new SplStack();
$stack->push("data1\n");
$stack->push("data2\n");
echo $stack->pop();
echo $stack->pop();
  • SplQueue 队列
$queue = new SplQueue();
$queue->enqueue("queue1\n");
$queue->enqueue("queue2\n");
echo $queue->dequeue();
echo $queue->dequeue();


  1. 堆是遵循堆属性的树状结构: 每个节点都大于或等于其子级, 使用对堆全局的已实现的比较方法进行比较。
  • SplHeap 堆
    • SplMaxHeap 最大堆
    • SplMinHeap 最小堆
$heap = new SplMinHeap();
$heap->insert("heap1\n");
$heap->insert("heap2\n");
echo $heap->extract();
echo $heap->extract();
  • SplPriorityQueue 优先队列

  1. 数组
    数组是以连续方式存储数据的结构, 可通过索引进行访问。不要将它们与 php 数组混淆: php 数组实际上是按照有序的列表实现的。

– SplFixedArray 数组

$array = new SplFixedArray(10);
$array[0] = 123;
$array[9] = 1234;
var_dump($array);

  1. 映射
    映射是一个数据拥有键值对。PHP 数组可以被看作是从整数/字符串到值的映射。SPL 提供了从对象到数据的映射。此映射也可用作对象集。

– SplObjectStorage 映射

Scroll to Top