# Estructuras de datos

## Tabla de contenidos

- SplDoublyLinkedList
- SplStack
- SplQueue
- SplHeap
- SplMaxHeap
- SplMinHeap
- SplPriorityQueue
- SplFixedArray
- ArrayObject
- SplObjectStorage

SPL proporciona un conjunto de estructuras de datos estándar. Estas están agrupadas por su implementación subyacente la cual usualmente define su campo de aplicación general.

## Listas doblemente enlazadas

Una Lista Doblemente Enlazada (DLL en inglés) es una lista de nodos enlazados entre ellos en ambas direcciones. Las operaciones de iteración, acceso a ambos extremos, adición o remoción de nodos tienen un costo de O(1) cuando la estructura subyacente es una DLL. Por lo tanto, proporciona una implementación decente para pilas y colas.

- SplDoublyLinkedList
  - SplStack
  - SplQueue

## Montículos

Los montículos son estructuras de árboles que siguen la propiedad de los montículos: cada nodo es mayor o igual que sus hijos, cuando son comparados utilizando el método de comparación implementado, el cual es global al montículo.

- SplHeap
  - SplMaxHeap
  - SplMinHeap
- SplPriorityQueue

## Arrays

Los array son estructuras que almacenan datos de una forma continua y accesible mediante índices.

> Nota: No deben confundirse con los arrays nativos de PHP. Los array de PHP son en realidad tablas hash ordenadas. Mientras que, SPL proporciona la clase ArrayObject que envuelven los arrays de PHP en un objeto.

- SplFixedArray

## Mapa

Un mapa es una estructura de datos que contiene parejas de clave-valor. Los array de PHP pueden ser vistos como correspondencias (mapas) de enteros/string a valores. SPL proporciona una correspondencia de objetos a datos. Este mapa puede ser utilizado además como un conjunto de objetos.

- SplObjectStorage

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open