Francisco J. Hernández López [email protected] 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. listasiguiente = NULL 3. listaanterior = 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_nuevosiguiente = lista 3. nodo_nuevoanterior = NULL (ya que lista puede apuntar a cualquier nodo, entonces: nodo_nuevoanterior=listaanterior) 4. listaanterior = 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_nuevosiguiente = NULL 2. auxiliarsiguiente = nodo_nuevo 3. nodo_nuevoanterior = 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_nuevosiguiente = auxiliarsiguiente auxiliarsiguiente = nodo_nuevo nodo_nuevoanterior = auxiliar nodo_nuevosiguienteanterior = 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 = listasiguiente 2. auxiliarsiguienteanterior = 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. auxiliaranteriorsiguiente = 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 = listaanterior ó lista = listasiguiente 2. auxiliaranteriorsiguiente = auxiliarsiguiente 3. auxiliarsiguienteanterior = auxiliaranterior 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