jueves, 24 de octubre de 2013

Eliminar Nodos en listas enlazadas.



Eliminar Nodos en listas enlazadas.


Figura numero 5

En la clase vista aprendimos mas operaciones que se pueden realizar en una lista enlazada simple y dobles, el primero en realizar fue eliminar un nodo en listas enlazadas simples, y para esto la condición que existe es que la lista debe tener elementos para poder eliminar. Se realiza mediante las siguientes instrucciones:

if(p!=null){ 
if(p==q){ 
p=q=null; 
} else { 
p=p.getSig(); } 
} else {
System.out.println(“Lista Vacia”); }

se valida que la lista este vacía, luego se valida que exista un solo nodo. En caso de que las dos condiciones se cumplan quiere decir que solo existe un nodo y se eliminara dando valor a p y q con null, en caso de que la segunda condición no se cumpla quiere decir que existe mas de un solo nodo y como se quiere eliminar el primero se le dice a p que ahora apunte al siguiente nodo.

Eliminar Lista Enlazadas Dobles: para eliminar un nodo en las listas enlazadas dobles se requiere realizar el siguiente algoritmo.

if(p!=null){ 
if(p==q){ 
p=q=null; 
} else { 
p=p.getSig(); 
p.setAnt(null); 

} else { 
System.out.println(“Lista Vacia”); 
}

este algoritmo es parecido al anterior siendo que este ay que darle valor a  la parte anterior del nodo que va a quedar de primero.

Eliminar, al final de, en listas enlazadas simple: Para la eliminación de un nodo en una lista enlazada simple es necesario de declarar otra variable y esta apuntara al antepenúltimo nodo de la lista.

if(p!=null){ 
if(p==q){ 
p=q=null; 
} else { 
Nodo r =p; 
while(r.getSig()!=q){ 
r= r.getSig(); 

r.setSig(null); 
q=r; } 
} else { 
System.out.println(“Lista Vacia”); 
}


principalmente se realizan dos validaciones la primera es que la lista tenga datos almacenados, la segunda es preguntar si solo se encuentra un solo nodo, en caso de que las dos se cumplan entonces se les da valor a p y q de null, e caso de que la segunda condición no se cumpla se declara otra variable de tipo Nodo y que sea igual a p, mediante una estructura repetitiva se pasara  la nueva variable que declaramos hacia el antepenúltimo nodo que tiene la lista, cuando ya se tiene al nodo que esta anterior del ultimo en la parte siguiente de este se le asignara un null y ahora la variable q que es la apunta al ultimo nodo pasara donde esta la variable que declaramos en este caso r.

Eliminar Lista enlazada Doble:  en esta instrucciones no es necesario declarar la variable que apunte al antepenúltimo nodo.

if(p!=null){ 
if(p==q){ 
p=q=null; 
} else { 
q=q.getAnt(); 
q.setSig(null); } 
} else { 
System.out.println(“ListaVacia”); 
}


Estas instrucciones son parecidas al eliminar anterior siendo que este no se declara la variable r que apunta al antepenúltimo nodo, cuando la segunda condición es falsa se le asigna un nuevo valor a q el cual es la dirección que el almacena en su parte anterior, y a la parte siguiente del nodo que apunta q ahora se le asigna un null ya que es el ultimo nodo de la lista.

Método Buscar para listas enlazadas simples.




if(p!=null){
Nodo r=p;
Nodo s=null;
while(r!=null && r.getDato()!=x){
s=r;
r=r.getSig();
} if(r!=null){
// código para *Consultar*Modificar, *Eliminar
} else {
System.out.println(“Dato noencontrado”);
} else {
System.out.println(“Lista Vacia”);
}


En el siguiente algoritmo validamos que la lista tenga datos, mediante un ciclo while buscaremos el dato que se quiere encontrar. se valida en caso de que no encuentre el dato.

En la figura numero 5 se muestra una operación de listas enlazadas simples la cual es eliminación al inicio.

Apreciaciones importantes y Reflexión:  

Es muy importante antes de realizar cualquier método en una lista enlazada ya sea simple o dobles analizar lo que se quiere hacer mediante dibujos que ayuden a  dar una solución.





No hay comentarios:

Publicar un comentario