2. Nodo
public class Nodo {
private int data; // al macena el dato
private Nodo sig; //”liga” al próximo nodo
private Nodo ant; // ”liga” al anterior nodo
}
ant sig
2
3. Operaciones de una lista doblemente enlazada
Añadir o insertar elementos.
Buscar elementos.
Borrar elementos.
Moverse a través de la lista, siguiente y anterior.
sig
ant
Inicio fin
3
4. Añadir elemento a una lista vacía
1-nodo = anterior y nodo=siguiente a NULL.
4
5. Insertar nuevo nodo
Caso 1 Insertar nodo en la primera posición
Nuevo
nodo
insertaNodo( nodo)
1-. Nodo=siguiente // debe apuntar a Lista.
2-. Nodo=anterior y Lista=anterior.
3-. Lista=anterior //debe apuntar a nodo.
1
null
2 Dato Dato Dato …
3
5
6. Caso 2 Insertar un elemento en la última posición
InsertarUltimo(nodo)
1-. Nodo=siguiente y Lista=siguiente (NULL).
2-. Lista=siguiente // debe apuntar a nodo.
3-. Nodo=anterior //apuntará a Lista.
2
Dato Dato Dato
1
3 null
Dato
6
7. Caso 3 Insertar un nodo en medio.
InsertarMedio (nodo )
1-. Nodo=siguiente apunte a lista=siguiente.
2-. Lista=siguiente //apunte a nodo.
3-. Nodo=anterior //apunte a lista.
4-. Nodo=siguiente=anterior // apunte a nodo.
Dato Dato Dato null
4
3 2 1
Dato 7
8. Eliminar
Caso 1 Eliminar el único nodo
En este caso, ese nodo será el apuntado por Lista.
1-. Eliminamos el nodo.
2-. Hacemos que Lista apunte a NULL.
8
9. Caso 2
Caso 2.1Eliminar el primer nodo
eliminaPrimer( nodo)
1-. Si nodo apunta a Lista // hacemos que Lista apunt
Lista=siguiente.
2-. Hacemos que nodo=siguiente=anterior// apunte a
NULL
3-. Borramos el nodo apuntado por nodo.
9
10. Caso 2.2 Eliminar un nodo intermedio
eliminaMedio(nodo)
1-. Si nodo apunta a Lista
Lista=siguiente
2-. nodo= siguiente
3-. Nodo = anterior
4-. Borramos el nodo apuntado por nodo
10
11. Caso 3 Eliminar el último nodo
eliminaUltimo(nodo)
1-. Si nodo apunta a Lista
Lista=anterior.
2-nodo=anterior=siguiente apunte a NULL
3-. Borramos el nodo apuntado por nodo.
11
13. Circular
Una lista circular es una lista lineal en la
que el último nodo a punta al primero.
inicio
fin
13
14. Operaciones de una lista circular
las operaciones que se pueden realizar
sobre las listas circulares :
Añadir o insertar elementos.
Buscar o localizar elementos.
Borrar elementos.
Moverse a través de la lista
14
15. Insertar un elemento
Insertar elemento en la lista vacía
lista apunta a nodo.
lista->siguiente apunte a nodo.
Insertar elemento en una lista no vacía
1. Hacemos que nodo = siguiente apunte a lista = siguiente.
2. Después que lista = siguiente apunte a nodo.
15
16. Eliminar un elemento de la lista
Eliminar el único nodo de la lista.
1. lista = siguiente mientras lista = siguiente sea distinto de
nodo.
2. Hacemos que lista = siguiente apunte a nodo = siguiente.
3. Eliminamos el nodo.
Eliminar un nodo en una lista circular con más de
un elemento
1. Borramos el nodo apuntado por lista.
2. Hacemos que lista valga NULL.
16
17. Eliminar un elemento de la lista
Caso general
1. Copiamos el contenido del nodo = siguiente sobre el contenido
de nodo.
2. Hacemos que nodo = siguiente apunte a nodo = siguiente =
siguiente.
3. Eliminamos nodo = siguiente.
4. Si lista es el nodo = siguiente, hacemos lista = nodo.
17