You are on page 1of 25

Algoritmos y Estructura de datos

avanzado - HMJ
Lista enlazadas
Adems de los arrays, otra de las
estructuras de datos muy utilizada es la
lista enlazada
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Desventajas de los arreglos:
En array no-ordenado, bsqueda lenta
En array ordenado, insercin lenta
En ambos casos, borrado lento
El tamao del array no puede ser
modificado luego de creado
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Definicin
Una lista enlazada es una secuencia
de nodos que se interconectan
mediante sus campos de enlace
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Definicin
Son estructuras de datos en las que los
elementos no se almacenan en
posiciones contiguas de memoria
Se utilizan para evitar movimientos de
grandes cantidades de datos,
asumiendo el coste aadido de una
referencia adicional por cada
elemento
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Implementacin
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Implementacin
Cada elemento se almacena en un
nodo que contiene:
el objeto que queremos almacenar y
una referencia al siguiente nodo en la
lista
Tambin se mantiene una referencia al
primer elemento de la lista (top)
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Implementacin
Esta estructura implica cuatro
conceptos:
clase auto-refenciada
nodo
campo de enlace
enlace
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Implementacin
Clase auto-reIerenciada: una clase con al
menos un campo cuyo tipo de referencia es
el nombre de la clase:
class Personal {
private int codigo:
private String nombre;
private double salario;
public Personal siguiente;
}
es una clase auto-referenciada porque
su campo s tiene el tipo
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Implementacin
Nodo: un objeto creado desde una
clase auto-referenciada
Campo de enlace: un campo cuyo tipo
de referencia es el nombre de la clase.
En el fragmento de cdigo anterior,
siguiente es un campo de enlace. Por el
contrario, codigo, nombre, y salario son
campos no de enlace
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Implementacin
Enlace:
la referencia a un campo de enlace. En el
fragmento de cdigo anterior, la referencia
siguiente a un nodo Personal es un enlace
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Lista de Enlace Simple
Es una lista enlazada de nodos, donde
cada nodo tiene un nico campo de
enlace.
Una variable de referencia contiene una
referencia al primer nodo
cada nodo (excepto el ltimo) enlaza
con el nodo siguiente
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Lista de Enlace Simple
el enlace del ltimo nodo contiene null,
para indicar el final de la lista
normalmente a la variable de referencia
se la suele llamar top
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Lista de Enlace Simple
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Insertar un Nodo
Algoritmo de insercion: 4 casos
cuando el nodo se debe insertar antes del
primer nodo;
cuando el nodo se debe insertar despus
del ltimo nodo;
cuando el nodo se debe insertar entre dos
nodos;
y cuando la lista de enlace simple no
existe
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Insertar un Nodo:Clase
Pseudocodigo:
DECLARE CLASS Nodo
DECLARE STRING nombre
DECLARE Nodo sig
END DECLARE
DECLARE Nodo top NULL
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Insertar un Nodo
Caso 1
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Insertar un Nodo
Caso 2
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Insertar un Nodo
Caso 3
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Eliminar un Nodo
Algoritmo de borrado: 3 casos
Eliminar el primer nodo;
Eliminar el ltimo nodo;
Eliminar un nodo entre dos nodos;
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Eliminar un Nodo
Caso 1
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Eliminar un Nodo
Caso 2
Algoritmos y Estructura de datos
avanzado - HMJ
Lista enlazadas
Eliminar un Nodo
Caso 3
Algoritmos y Estructura de datos
avanzado - HMJ
Listas Doblemente
Enlazadas
cada nodo guarda tambin una
referencia al nodo anterior de la lista
Tambin se suele mantener una
referencia al ltimo elemento de la lista
(bottom)
Algoritmos y Estructura de datos
avanzado - HMJ
Listas Circulares
Es una lista enlazada o doblemente
enlazada en la que el ltimo nodo est
enlazado con el primero
Algoritmos y Estructura de datos
avanzado - HMJ
Conclusiones
Los arrays son ms eficientes para acceder
a elementos de forma aleatoria
Utilizamos arrays cuando
Tenemos un n conocido de elementos
Todos los elementos son del mismo tipo
Las listas enlazadas son ms eficientes
cuando se producen muchas inserciones y
eliminaciones de elementos en posiciones
arbitrarias