数据结构
- 双链表
双链表 (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();
- 堆
堆是遵循堆属性的树状结构: 每个节点都大于或等于其子级, 使用对堆全局的已实现的比较方法进行比较。
- SplHeap 堆
- SplMaxHeap 最大堆
- SplMinHeap 最小堆
$heap = new SplMinHeap();
$heap->insert("heap1\n");
$heap->insert("heap2\n");
echo $heap->extract();
echo $heap->extract();
- SplPriorityQueue 优先队列
- 数组
数组是以连续方式存储数据的结构, 可通过索引进行访问。不要将它们与 php 数组混淆: php 数组实际上是按照有序的列表实现的。
– SplFixedArray 数组
$array = new SplFixedArray(10);
$array[0] = 123;
$array[9] = 1234;
var_dump($array);
- 映射
映射是一个数据拥有键值对。PHP 数组可以被看作是从整数/字符串到值的映射。SPL 提供了从对象到数据的映射。此映射也可用作对象集。
– SplObjectStorage 映射