𝗘𝘀𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗮𝘀 𝗱𝗲 𝗱𝗮𝘁𝗼𝘀 𝗹𝗶𝗻𝗲𝗮𝗹𝗲𝘀 𝗲𝗻 𝗲𝗹 𝗳𝗿𝗼𝗻𝘁𝗲𝗻𝗱
Las estructuras de datos lineales organizan los elementos en una secuencia. Cada elemento tiene un predecesor y un sucesor.
Arrays Los arrays son la herramienta principal en JavaScript. Utilizan memoria contigua. Esto permite acceder a cualquier elemento por su índice de forma instantánea.
- push: Añade un elemento al final.
- unshift: Añade un elemento al inicio. Esto es lento porque todos los demás elementos deben desplazarse una posición hacia la derecha.
- splice: Añade o elimina elementos en cualquier posición. Este método modifica el array original. No es una función pura.
Nota: Cuando un array crece demasiado, JavaScript debe asignar un bloque de memoria más grande y copiar todo en él. Esto afecta al rendimiento.
Stacks Una pila (stack) sigue la regla LIFO: Last In, First Out (el último en entrar es el primero en salir). Piensa en una pila de platos. Solo añades o quitas elementos de la parte superior.
- push: Añadir en la parte superior.
- pop: Eliminar de la parte superior.
- peek: Observar el elemento superior sin eliminarlo.
Queues Una cola (queue) sigue la regla FIFO: First In, First Out (el primero en entrar es el primero en salir). Piensa en una fila en una tienda.
- push: Añadir al final.
- shift: Eliminar del principio.
Advertencia: Usar shift en un array es lento para conjuntos de datos grandes. Cada elemento debe desplazarse hacia la izquierda para llenar el hueco. Para datos de gran volumen, utiliza una lista enlazada en su lugar.
Linked Lists Una lista enlazada consiste en nodos. Cada nodo contiene datos y un puntero al siguiente nodo.
- Ventajas: Añadir o eliminar nodos es rápido una vez que encuentras el lugar. Solo cambias los punteros.
- Desventajas: No puedes saltar a un índice. Debes empezar por la cabeza (head) y seguir los punteros uno por uno. Esto es lento.
Resumen de comparación:
- Arrays: Los mejores para lecturas frecuentes y datos pequeños. El acceso es O(1).
- Linked Lists: Las mejores para escrituras frecuentes y datos grandes. La inserción es O(1) si tienes el nodo.
Consejos profesionales para JavaScript:
- No mezcles tipos de datos en un array. Mantener los tipos uniformes ayuda al motor a utilizar memoria contigua.
- Utiliza siempre una función comparadora al ordenar números.
[10, 2].sort()da como resultado[10, 2]porque ordena como cadenas de texto. - Recuerda que la mayoría de los métodos nativos de los arrays mutan el array original.