# Estructuras de datos

## Tabla de contenidos

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

SPL provee 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 (LDE) 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 LDE. 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. No deben confundirse con los array de PHP: los array de PHP son en realidad implementados como tablas hash ordenadas.

- 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