Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2012, 08:09
cabeto14
 
Fecha de Ingreso: junio-2010
Mensajes: 46
Antigüedad: 14 años, 9 meses
Puntos: 0
problemas con codigo para eliminar nodo (lista encadenada)

hola a toda la comunidad. el profesor de mi universidad nos dio el codigo de una lista encadenada y a nosotros nos toca implementar la funcion eliminar(), que elimina el nodo correspondiente a una clave previamente ingresada. el problema que tengo es que cuando intento eliminar el unico nodo de la lista se produce un error en tiempo de ejecucion (violacion de segmento). aqui les muestro algo de codigo.

Código:
void Lsec::eliminar()
{
	int clave;
	char resp;
	nodo *anterior;
	nodo *apunt;
	nodo *ultimo;
	
		if (inicial==NULL)
		{
			cout<<"La lista esta vacia, no hay nodo que eliminar"<<endl;
		}
		else
		{
			cout<<"Ingrese la clave del nodo a eliminar: ";
			cin>>clave;
			if(inicial->dato==clave)
			{
				if (inicial->sig!=inicial)
				{
					ultimo=buscarUltimo();
					apunt=inicial;
					inicial=inicial->sig;
					ultimo->sig=inicial;
					delete apunt;
				}
				else //AQUI es donde se presenta el error creo
				{ //borra el unico nodo que queda
					inicial->sig=NULL;
					apunt=inicial;
					inicial=NULL;
					delete apunt;
					
				}
				
			}
			else
			{
				anterior=buscarLista(clave);
				if (clave>inicial->dato && anterior->sig->dato==clave )
				{
					apunt=anterior->sig;
					if (anterior->sig->sig!=inicial)
					{
						anterior->sig=anterior->sig->sig;
					}
					else
					{
						anterior->sig=inicial;
					}
					delete apunt;
				}
				else
				{
					cout<<"El nodo a eliminar no existe"<<endl;
				}
			}
		}
}
si alguien me puede ayudar, le estaré muy agradecido.

gracias