Title: LISTA DOBLEMENTE ENLAZADA
1LISTA DOBLEMENTE ENLAZADA
2Lista doblemente enlazada Definición
Una lista doblemente enlazada es una colección de
elementos llamados nodosDE Un nodoDE tiene tres
campos un campo izquierda, un campo dato y un
campo derecha. Los campos izquierda y derecha son
apuntadores a los nodos ubicados en el lado
izquierdo y el derecho de cada nodo
3Lista doblemente enlazada
51
99
izq. dato der.
izq. dato der.
izq. dato der.
- Se mantiene un nodoDE cabecera, cuyo campo
izquierda apunta a null, no tiene valor y cuyo
campo derecha apunta al nodoDE que tiene el
primer dato - El campo derecha del ultimo nodoDE apunta a null
4Lista doblemente enlazada Definición
Una lista doblemente enlazada es una estructura
de datos dinámica que permite almacenar cualquier
cantidad de nodos. Tiene la ventaja de que
estando en cualquier nodo se puede acceder al
nodo que está tanto a la izquierda como a la
derecha
5Lista doblemente enlazada Definición
- Las operaciones sobre una lista doblemente
enlazada son - Crear listaDE
- Insertar nodo al inicio
- Eliminar nodo al inicio
- Imprimir datos
- Es una listaDE vacía?
6Lista doblemente enlazada
- Crear lista doblemente enlazada
Al crear una listaDE, se crea el nodo
cabecera. El nodo cabecera tiene como dato,
izquierda y derecha a null.
7Lista doblemente enlazada
- Insertar nodo al inicio( La listaDE está vacía)
- Se crea un nuevo nodoDE con el dato que se desee
colocar, campo izquierda apuntado al nodo
cabecera y campo derecha apuntando a null - El campo derecha del nodo cabecera pasa de ser
null a ser el nodo que estamos insertado
9
8Lista doblemente enlazada
- Insertar nodo al inicio( La listaDE no está vacía)
9
1
9
- Se crea un nuevo nodo con el dato que se desee
colocar, campo izquierda apuntando al nodo
cabecera y campo derecha apuntado al nodo que
apunta el campo derecha del nodo cabecera - Al campo izquierda del nodo apuntado por derecha
del nodo cabecera se le asigna el nodo que
estamos insertando - Al nodo cabecera se le asigna como derecha al
nodo que estamos insertando
9Lista doblemente enlazada
1
9
9
- Al nodo cabecera se le asigna como derecha, la
derecha del primer nodo - Al campo izquierda del segundo nodo se le asigna
como izquierda el nodo cabecera (Solo si hay más
de un nodo)
10Lista doblemente enlazada
11Lista doblemente enlazada
Cuando la lista está vacía el campo derecha de la
cabecera es null
12Lista doblemente enlazada
public class NodoDE NodoDE izquierda
Object dato NodoDE derecha public
NodoDE(Object o) izquierda null dato
o derecha null
13Lista doblemente enlazada
- Crear listaDE
- Al crear una listaDE, se crea el nodo cabecera.
- El nodo cabecera tiene como dato, izquierda y
derecha a null.
class ListaC Nodo cabecera ListaC()
cabeceranew Nodo(null)
14Lista doblemente enlazada
public boolean esVacia( ) if
(cabecera.derechanull) return true
else return false
- Está una lista circular vacía?
- Cuando la lista está vacía el campo derecha de la
cabecera es null
15Lista doblemente enlazada
- Insertar nodo al inicio
- ( La listaDE está vacía)
- Se crea un nuevo nodoDE con el dato que se desee
colocar, campo izquierda apuntado al nodo
cabecera y campo derecha apuntando a null - El campo derecha del nodo cabecera pasa de ser
null a ser el nodo que estamos insertado
public void insertarDE(Object o) if
(esVacia()) NodoDE nuevo new NodoDE(o)
cabecera.derechanuevo
nuevo.izquierdacabecera
nuevo.derechanull
16Lista doblemente enlazada
- Insertar nodo al inicio
- ( La listaDE no está vacía)
- Se crea un nuevo nodo con el dato que se desee
colocar, campo izquierda apuntando al nodo
cabecera y campo derecha apuntado al nodo que
apunta el campo derecha del nodo cabecera - Al campo izquierda del nodo apuntado por derecha
del nodo cabecera se le asigna el nodo que
estamos insertando - Al nodo cabecera se le asigna como derecha al
nodo que estamos insertando
else NodoDE nuevo new NodoDE(o)
NodoDE primerocabecera.derecha
nuevo.derechacabecera.derecha
nuevo.izquierdacabecera primero.izquierdan
uevo cabecera.derechanuevo
17Lista doblemente enlazada
public void eliminarDE() NodoDE
eliminarcabecera.derecha NodoDE
derechaEliminareliminar.derecha
if(esVacia()) System.out.println("LA
LISTADE ESTA VACIA") else
cabecera.derechaeliminar.derecha
derechaEliminar.izquierdacabecera
- Eliminar nodo al inicio
- Al nodo cabecera se le asigna como derecha, la
derecha del primer nodo - Al campo izquierda del segundo nodo se le asigna
como izquierda el nodo cabecera