Una lista es una secuencia de elementos dispuesto en un cierto orden, en la que cada elemento tiene como mucho un predecesor y un sucesor. El número de elementos de la lista no suele estar fijado, ni suele estar limitado por anticipado.
2. Definición de listas en java
Una lista es una secuencia de elementos dispuesto en un cierto orden, en
la que cada elemento tiene como mucho un predecesor y un sucesor. El
número de elementos de la lista no suele estar fijado, ni suele estar limitado
por anticipado. Representaremos la estructura de datos de forma gráfica
con cajas y flechas. Las cajas son los elementos y las flechas simbolizan el
orden de los elementos.
› La estructura de datos deberá permitirnos determinar cuál es el primer elemento y el último de la
estructura, cuál es su predecesor y su sucesor (si existen de cualquier elemento dado). Cada uno de
los elementos de información suele denominarse nodo.
3. Características:
1- Las listas enlazadas permiten inserciones y eliminación
de nodos en cualquier punto de la lista en tiempo constante,
pero no permiten un acceso aleatorio.
2- Existen diferentes tipos de listas enlazadas: Listas
enlazadas simples, listas doblemente enlazadas, listas
enlazadas circulares y listas enlazadas doblemente
circulares.
3- Pueden ser implementadas en muchos lenguajes.
Lenguajes tales como Lisp y Scheme tiene estructuras de
datos ya construidas, junto con operaciones para acceder a
las listas enlazadas. Lenguajes imperativos u orientados a
objetos tales como C o C++ y Java, respectivamente,
disponen de referencias para crear listas enlazadas.
4. Terminología
Asignación dinámica de memoria
Para crear y mantener estructuras dinámicas de datos se
requiere la asignación dinámica de memoria; la
habilidad
para que un programa obtenga más espacio de memoria
en tiempo de ejecución, para almacenar nuevos
nodos y para liberar el espacio que ya no se necesita.
Recuerde que los programas de Java no liberan
explícitamente
la memoria asignada en forma dinámica. En vez de
ello,Java realiza la recolección automática de
basura en los
objetos que ya no son referenciados en un programa.
5. Terminología
› Listas Enlazadas:
Una lista enlazada es una colección lineal
(es decir, una secuencia) de objetos de una
clase autoreferenciada, conocidos como
nodos, que están conectados por enlaces
de referencia; es por ello que se utiliza el
término lista “enlazada”. Por lo general, un
programa accede a una lista enlazada
mediante una referencia al primer nodo en
a lista. El programa accede a cada nodo
subsiguiente a través de la referencia de
enlace almacenada en el nodo anterior. Por
convención, la referencia de enlace en el
último nodo de una lista se establece en
null. Los datos se almacenan en forma
dinámica en una lista enlazada; el
programa crea cada nodo según sea
necesario. Un nodo puede contener datos
de cualquier tipo, incluyendo referencias a
objetos de otras clases.
6. 3.2 Tipos de listas:
Simples
› El último nodo de la lista no apunta a ningún a ninguno (null).
› Se accede a la lista mediante el primer nodo o también llamado
inicio de la lista.
› No tiene acceso aleatorio es decir para acceder a un valor se debe
recorrer toda la lista.
7. Listas bidireccionales
(doblemente enlazadas).
› Una lista se dice que es bidireccional o doblemente enlazada cuando, para cada uno de
los elementos que la forman, existe una referencia al elemento anterior y otra al
elemento siguiente dentro de la estructura. Gracias a esta estructura, se puede recorrer
la lista en ambos sentidos. En la implementación de este tipo de listas hay que
considerar dos situaciones
› particulares:
› El elemento anterior al primero será el elemento nulo.
› El elemento siguiente al último será también el elemento nulo
8. Circulares:
› Listas circulares (anillos).
Se entiende por lista circular aquella en la que el último elemento de la lista
tiene definido un enlace al primer elemento de la lista. Desde un punto de vista
físico una lista circular por propia naturaleza no tiene principio ni fin. No
obstante, desde el punto de vista lógico, a referencia a la lista establece cómo
determinar la finalización de su recorrido tanto iterativo como recursivo.
9. 3.3 Construcción y operaciones de listas:
Sintaxis
La clase ArrayList en Java, es una clase que permite almacenar datos en
memoria de forma similar a los Arrays, con la ventaja de que el numero de
elementos que almacena, lo hace de forma dinámica, es decir, que no es
necesario declarar su tamaño como pasa con los Arrays. Para todos aquellos que
hayáis estudiado en alguna asignatura las estructuras de datos de las Pilas,
Colas, Listas, Arboles (AVL, B, B+, B*) etc.