← Lumbre

Estructuras de Datos y Algoritmos · 2.º Arreglos y listas enlazadas

← Volver a todos los contenidos
Portada de Arreglos y listas enlazadas

Arreglos y listas enlazadas

✦ La elección más básica y más decisiva: memoria contigua que permite saltar a cualquier posición, o nodos enlazados que permiten insertar sin mover nada · Estructuras de Datos y Algoritmos · Programación · en 5 minutos

Roadwise Consulting

Firmado y verificado · Fernando Castro

Objetivo: Compara el acceso, la inserción y el borrado en arreglos frente a listas enlazadas y elige la estructura adecuada al patrón de uso.

5 min 18–30 años
Autoevaluación
Más
Arreglos y listas enlazadas

Herramientas de la lección

◉ Entrar a La Matrix Sorpréndeme

Sobre este contenido

Ir a

Volver a Objetos Cursos Explorar Mi cuenta Salir del modo estudio

Arreglos y listas enlazadas

Diagrama de estructuras de datos: arbol binario, lista enlazada y tabla hash.
Estructuras de datos fundamentales y analisis de complejidad algoritmica.

Mapa conceptual

  • Estructuras de Datos
    • Lineales
      • Arrays
      • Listas enlazadas
      • Pilas y Colas
    • No lineales
      • Arboles BST
      • Heaps
      • Grafos
    • Hash
      • Funcion hash
      • Colisiones
      • Rehashing
    • Algoritmos
      • Ordenamiento
      • Busqueda binaria
      • BFS DFS
    • Optimizacion
      • Big-O
      • Dinamica
      • Voracidad

Arreglo (array)

Bloque de memoria contigua de mismo tipo. Como los elementos están uno tras otro, el acceso por índice es O(1): el computador calcula la dirección base + índice·tamaño. El precio: insertar o borrar en el medio obliga a DESPLAZAR todos los siguientes (O(n)), y el tamaño fijo puede obligar a copiar todo al crecer.

Lista enlazada

Secuencia de nodos, cada uno con su dato y un puntero al siguiente. Insertar al inicio o junto a un nodo conocido es O(1): solo cambias punteros, no mueves datos. El precio: para llegar al elemento k hay que RECORRER desde la cabecera (O(n)); no hay acceso aleatorio.

Nota la trampa de la inserción enlazada: es O(1) solo SI ya tienes el puntero al nodo; localizar ese nodo sigue costando O(n).
OperaciónArregloLista enlazada
Acceso por índiceO(1)O(n) (recorrer)
Insertar al inicioO(n) (desplazar)O(1) (nuevo nodo)
Insertar en el medioO(n)O(1) una vez localizado el sitio
Buscar un valorO(n)O(n)
Memoria por elementocompacta, contiguaextra por el puntero
Crecimientoa veces copiar (amortizado O(1))siempre O(1) añadir al final

¿Cuándo cada uno?

  • Arreglo cuando predominan LECTURAS por posición o recorridos secuenciales rápidos (cache friendly): vectores, filas de un dataset, píxeles.
  • Lista enlazada cuando hay MUCHAS inserciones/borrados en el medio a partir de un nodo ya conocido, y no necesitas acceso aleatorio: colas de prioridad enlazadas, historiales deshacer.
  • En la práctica, el arreglo dinámico (vector/lista de Python) gana casi siempre por localidad de memoria; la lista enlazada pura es más pedagógica que usada.

¿Cuál es la complejidad de INSERTAR un elemento al principio de una lista enlazada simplemente enlazada frente a un arreglo?

El acceso aleatorio a la posición i de un arreglo es O(1) porque sus elementos son de tamaño fijo y están en memoria contigua.

Clasifica cada operación según dónde rinde mejor (complejidad más baja).

Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.

Errores frecuentes

  • Creer que la lista enlazada hace cualquier inserción O(1): Localisation del punto cuesta O(n).
  • Olvidar el costo en caché y asumir que dos estructuras con el mismo Big-O son igual de rápidas.
  • Usar arreglo cuando se necesita insertar al inicio a menudo: cada inserción desplaza todo.

Ejemplo resuelto

  1. Necesitas una cola de tareas donde siempre añades al final y tomas del principio.
  2. Con un arreglo, tomar del principio desplaza todos los elementos: O(n).
  3. Con una lista enlazada (o un arreglo circular), tomar del principio es mover la cabecera: O(1).
  4. Conclusión: para ese patrón FIFO, la estructura enlazada o un deque es mejor que un arreglo plano.
  5. Nota: si además necesitaras «mirar la tarea i-ésima», volverías a preferir el arreglo.

Todo un DataFrame es, por dentro, un arreglo (o varios). Por eso filtrar por posición o recorrer columnas es veloz, e insertar filas en el medio es caro. Entender arreglo-vs-enlazada explica por qué «añadir una fila a un CSV reescribiéndolo» no escala y una base de datos usa índices aparte.

Contiguo o enlazado

arreglo
memoria contigua, acceso O(1)
lista enlazada
nodos + puntero, inserción O(1)
acceso aleatorio
ventaja del arreglo
desplazar
costo de insertar/borrar en arreglo
localidad de caché
ventaja real del arreglo
puntero extra
costo de memoria de la enlazada

Toca una tarjeta para ver la respuesta.

Video complementario
Recurso audiovisual para reforzar los conceptos.

Estás implementando un historial «deshacer» donde lo frecuente es añadir la última acción y deshacer la más reciente, pero a veces consultar la acción número k. Argumenta si prefieres arreglo o lista enlazada y qué operación de tu lista de deseos sale cara.

Tu texto se guarda sólo en este dispositivo.

Las respuestas y tu progreso se guardan sólo en este dispositivo. Contenido firmado por su autoría mediante Lumbre.

Autoevaluación

Comprueba lo que aprendiste

2 preguntas · ves cada respuesta al momento · el resultado queda guardado en tu historial

Iniciar autoevaluación
Más sobre esta lección

Rutas vivas

¿Y ahora qué? Elige el camino por lo que necesitas

No es un listado al azar: cada camino responde una pregunta distinta y te dice por qué.

Otra forma de comprenderlo

✦ Explorar el universo completo
Explora temas relacionados

Conceptos

Comentarios

Inicia sesión para comentar.

Todavía no hay comentarios. Sé la primera persona en opinar.