Lista doblemente enlazada

Anuncio
Francisco J. Hernández López
fcoj23@cimat.mx
 Son listas ligadas en las que cada nodo tiene dos enlaces (o
apuntadores):
 Uno apunta al nodo siguiente
 El otro apunta al nodo anterior
 Se puede recorrer en ambos sentidos a partir de cualquier nodo
lista
NULL
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
NULL
Agosto-Diciembre 2014
2
lista
1
NULL
NULL
2
NULL
3
nodo_nuevo
1. lista = nodo_nuevo
2. listasiguiente = NULL
3. listaanterior = NULL
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
3
lista
1
NULL
4
2
NULL
3
nodo_nuevo
1. Hacemos que lista apunte al primer elemento de la lista
2. nodo_nuevosiguiente = lista
3. nodo_nuevoanterior = NULL (ya que lista puede apuntar a
cualquier nodo, entonces: nodo_nuevoanterior=listaanterior)
4. listaanterior = nodo_nuevo
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
4
lista
NULL
2
auxiliar
NULL
1
3
nodo_nuevo
1. nodo_nuevosiguiente = NULL
2. auxiliarsiguiente = nodo_nuevo
3. nodo_nuevoanterior = auxiliar
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
5
lista
NULL
NULL
auxiliar
2
4
1
3
nodo_nuevo
1.
2.
3.
4.
nodo_nuevosiguiente = auxiliarsiguiente
auxiliarsiguiente = nodo_nuevo
nodo_nuevoanterior = auxiliar
nodo_nuevosiguienteanterior = nodo_nuevo
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
6
2
lista
NULL
NULL
NULL
1
1. Liberar la memoria apuntada por lista
2. lista = NULL
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
7
lista
1
NULL
NULL
3
auxiliar
2
NULL
1. lista = listasiguiente
2. auxiliarsiguienteanterior = NULL
3. Eliminar la memoria apuntada por auxiliar
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
8
lista
2
NULL
NULL
1
auxiliar
3
1. Buscar el último nodo (“auxiliar” apunta al último nodo)
2. auxiliaranteriorsiguiente = NULL
3. Eliminar la memoria apuntada por auxiliar
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
9
lista
2
NULL
NULL
1
auxiliar
4
3
1. Buscar el nodo a eliminar (“auxiliar”)
a) Si “lista” apunta a “auxiliar” entonces
• lista = listaanterior ó lista = listasiguiente
2. auxiliaranteriorsiguiente = auxiliarsiguiente
3. auxiliarsiguienteanterior = auxiliaranterior
4. Liberar memoria apuntada por auxiliar
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
10
Programación Avanzada, Listas doblemente ligadas.
Francisco J. Hernández-López
Agosto-Diciembre 2014
11
Descargar