SoloCodigo

Programación General => Java => Mensaje iniciado por: digichap28 en Sábado 7 de Junio de 2008, 17:33

Título: Problemas Para Eliminar Nodo !!! Help
Publicado por: digichap28 en Sábado 7 de Junio de 2008, 17:33
Hola, que tal?
Bueno , tengo un problema con este ejercicio que me pidieron, este codigo corre si quiero eliminar todos los datos en una lista circular simple o sencilla , con excepcion de estos casos:

*Cuando el nodo se encuentra en la primera posicion y se desea eliminar ese, dejando apuntado el siguiente nodo, por ptr.

*Cuando solo existe un nodo y se desea eliminar ese, dejando la lista en null.

Por favor necesito un poco de ayuda con eso, si son tan amables.
Gracias.

Citar
public void EliminarNodoConInfoZ(int z){
         
        node p;
        node q;
           
           if(ptr==null){
           JOptionPane.showMessageDialog(null,"Lista vacia.");
           }
           else{
           p=ptr;
           q=p;
           
           while(z!=(p.getInfo())){
           q=p;
        p=p.getNext();
           
           }
           
            q.setNext(p.getNext());   
                       
           }
                                         }
Título: Re: Problemas Para Eliminar Nodo !!! Help
Publicado por: manix en Sábado 7 de Junio de 2008, 19:17
Amigo ya hace tiempo otro compañero tenia el mismo problema que vos, por eso aca te dejo este tutorial, todas las lineas estan detalladas


saludos
Título: Re: Problemas Para Eliminar Nodo !!! Help
Publicado por: digichap28 en Sábado 7 de Junio de 2008, 22:58
Se supone que el codigo o la parte logica esta bien!!
Pero ahora lo que hace es que si intento eliminar el primer nodo , lo pone en la ultima posicion de la lista circular!!

Ayuda!!

Citar
public void EliminarNodoConInfoZ(int z){
         
        node p;
        node q;
           boolean primernodo;
           
           if(ptr==null){
           JOptionPane.showMessageDialog(null,"Lista vacia.");
           }
           else{
           p=ptr;
           q=p;
           primernodo=true;
           while(z!=(p.getInfo())){
           q=p;
        p=p.getNext();
           primernodo=false;
           }
            if(primernodo){
                if(p.getNext=ptr){
                   ptr=null;
                }
                else{
                 ptr=p.getNext();   
                }
                         
            }
            else{
              q.setNext(p.getNext());   
            }
               
                     
           }
                                         }