LISTA ENLAZADA

Ya vimos que la mayoria de las lenguajes de programación tiene metodos nativos para la manioulación de arrays, como por ejemplo insertar y remover elementos. Adémas, estos metodos hacen una buena parte del trabajo de ordenar y buscar elementos por nosotros..

Pero, hay tres cosas importantes para saber sobre arrays:

  1. En la mayor parte de las lenguajes de programación, los arrays tienen tamaños fijos;
  2. Todos los elementos ocupan espacios sequenciales en la memoria;
  3. Insertar o remover elemento del medio del array no es muy sencillo, porque necesita que elementos sean desplazados. Por ejemplo:
// 0   1   2   3
[46, 34, 76, 12]

// removiendo 76, el elemento 12 pasa a ocupar el índice 2
// 0  1   2
[46, 34, 12]
// 0   1   2   3
[46, 34, 76, 12]

// añadiendo 25, el elemento 12 pasa a ocupar el índice 4
// 0  1   2   3   4
[46, 34, 76, 25, 12]

Este trabajo de desplazar elementos es hecho internamente por los metodos nativos del array que los lenguajes ya tienen y utilizamos en el dia a dia, por eso normalmente no nos fijamos. Pero, esta en la implementación del metodo hecho en el codigo fuente del lenguaje.

Al igual que los arrays, las listas enlazadas también almacenan elementos secuencialmente, sin embargo, en lugar de almacenar elementos contiguos en la memoria, como en los arreglos, las listas enlazadas no dependen de este tipo de organización. Utilizan punteros para vincular elementos, y cada elemento "apunta" a la dirección de memoria del siguiente en la lista, sin necesidad de estar en el siguiente bloque de memoria.

De esta forma, cuando se trabaja con listas enlazadas, tampoco es necesario desplazar elementos al incluir o eliminar, considerando que, cada vez que se realiza este desplazamiento en un arreglo, es necesario reposicionar los elementos en nuevos espacios de memoria. Cada "nodo" en la lista apunta al puntero de memoria donde se encuentra el siguiente elemento, independientemente de dónde se encuentre ese espacio de memoria.

 

Listas Enlazadas

Usos

Recordando que la lista vinculada, vincula elementos que apuntan a la ubicación del siguiente elemento en la memoria, los programas de "álbum de fotos" (vista de imagen) utilizan la lista vinculada para vincular los archivos de imagen y "llamar" a la imagen siguiente/volver a la imagen anterior a través de flechas del teclado o botones “anterior” y “siguiente”. El mismo principio se aplica a las listas de reproducción de música o vídeo.