Anda di halaman 1dari 6

//metodo para insertar un nodo 1.

- Ingresamos el dato a guardar a un Nodo


public void insertarNodo(int dato) { DATO = AAA
Nodo nuevo = new Nodo();
2.- Creamos nuestro nodo y guardamos el dato en el.
nuevo.dato = dato;

NULL
AAA
if (primero == null) {
primero = nuevo; 3.-Un vez creado el nodo, tenemos una condicin que nos pregunta q si el
ultimo = primero; puntero PRIMERO apunta null entra por el Si.
primero.siguiente = ultimo; El puntero PRIMERO que apunte al nuevo nodo, el puntero ultimo apunte a
Primer y que se enlace con el mismo nodo, este caso solo pasa una vez
} else {
ultimo.siguiente = nuevo;
nuevo.siguiente = primero;
ultimo = nuevo; AAA
}
}

4.- Para ingresa otro dato en este caso BBB, se realizan los dos primeros pasos
despus se realiza la pregunta de la condicin que si primero es un null,
en este caso ya PRIMERO esta apuntando al nodo ingresado anteriormente .
Se realiza lo siguiente el enlace del nodo anterior ya no apunta a si mismo si no
Al nuevo nodo, el nodo nuevo apunta al primer nodo y el puntero ULTIMO pasa AAA BBB
Apuntar al nuevo nodo
1.- En este mtodo recibimos como parmetro le dato a buscar
//mtodo para buscar un nodo
DATO: BBB
public void buscarNodo(int dato) {
Nodo actual = new Nodo(); 2.- Creamos otro puntero que tome el nombre de ACTUAL que apunte al primer nodo
actual = primero; cuyo puntero es el que va a recorrer la lista, tambin creamos una variable boolean con
boolean encontrar = false; El valor FALSE, esto es para q si encuentra el dato al final del cdigo tenemos una
do { condicin.
if (actual.dato == dato) {
encontrar = true; 3.- una vez hecho los dos pasos anteriores, tenemos un ciclo que solo se puede salir cuando
break; Se cumpla la condicin de que el puntero actual regrese al primer nodo, dentro del ciclo
} Tenemos una condicin q nos pregunta q si en el dato del nodo actual es igual al del dato a
Buscar, y si se cumple la condicin la variable booleana se cambia a TRUE
actual = actual.siguiente;
} while (actual != primero);
4.-Como ultimo paso tenemos la condicin que si la variable boolean es igual a true,
Es por q si encontr el dato caso contrario no lo encontr
if (encontrar == true) {
System.out.println("ENCONTRADO"); BBB
} else {
System.out.println("NO ENCONTRADO"); ENCOTRADO = TRUE
}
}

AAA BBB CCC

X X X
//metodo para modificar un nodo
1.- Ingresamos el dato a modificar
public void modificarNodo(int dato) {
DATO: BBB
Nodo actual = new Nodo();
actual = primero; 2.- Creamos otro puntero que tome el nombre de ACTUAL que apunte al primer
nodo cuyo puntero es el que va a recorrer la lista,
do {
if (actual.dato == dato) {
System.out.println("INGRESE EL NUEVO 3.- este mtodo es similar al de buscar con la nica diferencia q si la condicin se
DATO PARA EL NODO"); cumple nos pide ingresar el nuevo nodo a modificar
actual.dato = teclado.nextInt();
}
actual = actual.siguiente;
} while (actual != primero);
AAA BBB CCC

X
}

X X
4.- En este caso si se cumple la condicin y nos pide
el nuevo dato DDD, el dato actual toma el dato
AAA DDD CCC dado

X X X
1.- Ingresamos el dato a Eliminar
//metodo para eliminar un nodo DATO: DDD
public void eliminarNodo(int dato) {
Nodo actual = new Nodo();
Nodo anterior = new Nodo(); 2.- Creamos dos punteros con los siguiente actual y Anterior y una variable boolean
actual = primero; para poder saber si el Dato a eliminar se encuentra en la lista
anterior = ultimo;
boolean encontrar = false;
if (actual != null) { 3.-Tenemos nuestra primer condicin que es que si actual esta apuntado a null
do { Imprima que hay datos en la lista pero si actual esta apuntado algn nodo ejecute el
if (actual.dato == dato) {
encontrar = true; Siguiente cdigo.
if (primero == ultimo) {
primero = null;
ultimo = null;
} else if (actual == primero) {
primero = primero.siguiente;
ultimo.siguiente = primero;
} else if (actual == ultimo) {
anterior.siguiente = ultimo.siguiente;
ultimo = anterior;
} else {

}
anterior.siguiente = actual.siguiente;
AAA DDD CCC
}
anterior = actual;
actual = actual.siguiente;
} while (actual != primero);

if (encontrar == false) {
System.out.println("DATO NO ENCONTRADO");
}

} else {
System.out.println("No hay Elementos en la lista");
}
}
4.-Como hemos visto en los mtodos anteriores para poder recorre la lista ultimamos un ciclo, dentro del ciclo tenemos 4 condicin, la primera nos
pregunta si el dato actual en la lista es igual al dato q queremos eliminar y se cumple esta condicin nos saldr 3 condiciones mas que nos dice q si solo
existe un nodo en la lista los puntero apunten a null.
El siguiente no pregunta si el dato a eliminar es el primero
A continuacin nos pregunta si el dato a eliminar es el ultimo y si no se cumple ninguna condicin
El dato a eliminar esta en medio

AAA

X
X
X DDD

X
CCC

X
X
X
//Mtodo para imprimir la lista
public void listar() {
Nodo actual = new Nodo();
actual = primero;
if (actual != null) {
do {
System.out.print(".[ " + actual.dato + " ]" + " -> ");
actual = actual.siguiente;
} while (actual != primero);
} else {
System.out.println("No hay Elementos en la lista");
} 1.- Creamos nuestro puntero actual y que apunte al
primer nodo, llegamos a la condicin que nos pregunta si
el puntero actual es igual a null, esta condicin es para
ver si hay elementos en la lista pero por el momento si
}
hay entramos por el si, tenemos un ciclo. Nos imprime el
dato del Nodo actual y despus se salta al siguiente nodo
hasta que llegue al primer nodo de nuevo y la condicin
del ciclo de cumpla

AAA CCC
.[AAA] -> .[CCC] ->

X X