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

problemas con codigo para eliminar nodo (lista encadenada)

Estas en el tema de problemas con codigo para eliminar nodo (lista encadenada) en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/08/2012, 08:09
 
Fecha de Ingreso: junio-2010
Mensajes: 46
Antigüedad: 13 años, 10 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

Etiquetas: c++, encadenada, lista, listas
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 18:35.