Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Borrar

Estas en el tema de Borrar en el foro de C/C++ en Foros del Web. Código: void Lista<T>::eliminarId(string id){ Nodo<T>* aux1; Nodo<T>* temp; Nodo<T>* actual=primerNodo; Nodo<T>* ante=primerNodo; Nodo<T>* sigue=primerNodo->obtenerSiguiente(); Iterador<T>* i = obtenerIterador(); T* tmp = i->proximoElemento(); if (actual ==NULL) ...
  #1 (permalink)  
Antiguo 01/06/2009, 00:17
 
Fecha de Ingreso: noviembre-2008
Ubicación: aserri
Mensajes: 27
Antigüedad: 16 años
Puntos: 1
Borrar

Código:
void Lista<T>::eliminarId(string id){
  Nodo<T>* aux1;
      Nodo<T>* temp;
Nodo<T>* actual=primerNodo;
Nodo<T>* ante=primerNodo;
Nodo<T>* sigue=primerNodo->obtenerSiguiente();
	Iterador<T>* i = obtenerIterador();

	T* tmp = i->proximoElemento();
 if (actual ==NULL) 

   { 

	   cout << "La lista esta vacia"<<endl;

      

   }
    if ( tmp->getId()==id && primerNodo->obtenerSiguiente()== NULL)

   {

		    primerNodo=NULL;}

/////////////////////////////////////////////////////////////////////////////////////
//En caso de ser el primero de  una lista de varios elementos 
  if ( tmp->getId()==id  &&  primerNodo->obtenerSiguiente()!= primerNodo )
    {
		     primerNodo=primerNodo->obtenerSiguiente();
	        actual=NULL;  

    }


else{actual = actual->obtenerSiguiente(); 
sigue=primerNodo->obtenerSiguiente();   
     while(actual !=NULL) 

	 {

        if(tmp->getId()==id)

    {aux1=ante->obtenerSiguiente(); aux1=sigue;actual=NULL; }
 tmp = i->proximoElemento();  
  actual = actual->obtenerSiguiente(); 
  primerNodo = primerNodo->obtenerSiguiente();   
  sigue = sigue->obtenerSiguiente(); 
  ante = ante->obtenerSiguiente(); 
         }
}
		    	


        	

}
TENGO ESE COD PARA ELIMINAR UNA PLANTILLA PERO SOLO ELIMINA SI ES PRIMERO Y SI ES EL DEL MEDIO O ASI NO HACE NADA Y SI ES EL ULTIMO BORRA TODO MENOS EL ULTIMO... EL ERROR ES EN EL PUNTERO PERO NO SE COMO ARREGLARLO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:09.