Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/11/2013, 09:22
Avatar de elafrikano
elafrikano
 
Fecha de Ingreso: noviembre-2013
Ubicación: Carúpano, Estado Sucre.
Mensajes: 9
Antigüedad: 10 años, 5 meses
Puntos: 2
Respuesta: eliminar elemento de lista enlazada

Te explico: No te sale porque cuando encuentras el elemento que es igual al numero que buscas lo borras de una vez y cuando haces aux1=aux1->siguiente te debe dar un error porque el puntero apunta a la nada o no existe, no se como trabaja c++ porque soy mas diestro en c pero creo que ya la el puntero ni debe exisitir y si existe no contiene nada. En ese caso distindo a eliminar en forma de pilas o colas debes declarar 2 punteros uno que sea igual a incio y otro que valla atras de el para que cuando lo encuentres el numero que buscas hagas el enlace antes de borrar y la lista enlazada no quede desenlazada xD Saludos y espero haberte ayudado. Si tengo algun error de sintaxis disculpa como te dije nunca he trabajado con c++ solo con C.

Código C++:
Ver original
  1. void Nodo::eliminar_busqueda( int b_num ) {
  2.     Nodo * aux1, *aux2;
  3.     int contador = 0;
  4.    
  5.     if( inicio == NULL ) {
  6.         cout << "Lista vacia" << endl;
  7.     } else {
  8.         aux1 = inicio;
  9.        
  10.         while( aux1 != NULL ) {
  11.             if( b_num == aux1 -> num ) {
  12.                 contador++;
  13.  
  14.                 if(aux1 == inicio){
  15.  
  16.                       inicio = aux->siguiente;
  17.                       delete aux1;
  18.                 }
  19.                  else if(aux1  == ultimo){
  20.  
  21.                       ultimo = aux2;
  22.                       delete aux1;
  23.                  }
  24.                  else{
  25.                  
  26.                       aux2->siguiente = aux1->siguiente;
  27.                       delete aux1;
  28.                  }
  29.  
  30.             } else {
  31.                 aux2 = aux1;
  32.                 aux1 = aux1 -> siguiente;
  33.             }
  34.         }
  35.     }
  36.    
  37.     if( contador == 0 ) {
  38.         cout << "\nNumero no encontrado" << endl;
  39.     }
  40. }