Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: SXF en 16 Mayo 2011, 13:17 pm



Título: Problema con un programa
Publicado por: SXF en 16 Mayo 2011, 13:17 pm
    Buenas pues la duda es la siguiente , intento eliminar un elemento de la lista , pero no lo consigo me tira un error de ejecucion.
    Si alguien me puede ayudar.

Código
  1. void eliminar(nodo *cab,nodo *fin)
  2. {    int num;
  3.    cout<<"Dime el numero del libro a eliminar: "<<endl;
  4.    cin>>num;
  5.    nodo *temp2;
  6.    temp2=cab;
  7.    nodo *N;
  8.  
  9.     while(temp2 != NULL){
  10.  
  11.                         if (temp2->info==num){
  12.  
  13.                        nodo *aux;
  14.                        aux=temp2; //Guardo la direccion del elemento buscado
  15.  
  16.                        temp2=temp2->sgt;  //Aqui creo que esta el problema
  17.                        N=temp2;
  18.  
  19.                        delete aux;//Elimino el elemento (Libero el free store)
  20.  
  21.                        temp2=N;
  22.  
  23.                                                 }
  24.  
  25.      temp2=temp2->sgt;
  26.  
  27.  
  28.    }
  29.  
  30. }


Título: Re: Problema con un programa
Publicado por: dakomt en 27 Mayo 2011, 02:47 am
vaya.. 10 días y nadie te ha contestado..  :-\    ¿llegaste a solucionarlo?

El algoritmo que planteas falla por todos lados  :-(

Cuando eliminas un nodo de una lista  enlazada (dinámica) tienes que tener en cuenta 5 casos

Salvo en el último donde no tienes que hacer nada (salvo recorrer tooooda la lista  :D) tienes que tener mucho cuidado con la actualización de los punteros y el orden en el que la hagas.

- La lista está vacia ---> cab == NULL

- El nodo a eliminar es el nodo cabecera. --> si la lista tiene mas de un elemento, el segundo pasa a ser el nodo cabecera.

- El nodo a eliminar es el último nodo de la lista. --> el penultimo ahora apuntara a NULL

- El caso general. El nodo a eliminar está dentro de la lista. --> el anterior tiene que apuntar ahora al siguiente (Es el único caso que contemplas pero las actualizaciones de los punteros y el orden están mal)

- No existe el nodo

etc etc.

Espero que lo solucionaras  ;D



Título: Re: Problema con un programa
Publicado por: SXF en 27 Mayo 2011, 19:00 pm
Gracias por ser el ùnico que se inclino por contestarne, no se que tiene la "Gente" contra mi jeje , no mentira. Despuès de mucho pensar y buscar  ya lo resolvì, gracias nuevamente. ;D


Título: Re: Problema con un programa
Publicado por: dakomt en 28 Mayo 2011, 03:20 am
me alegro entonces  ;)