Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/02/2013, 14:29
Macas
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 6 meses
Puntos: 0
Printar lista enlazada

Muy buenas,

Tengo un problema a la hora de imprimir todos los elementos de una lista dinamica.
El problema me ocurro cuando borro el ultimo elemento de la lista, es decir si añado unos cuantos nodos e imprimo todos los elementos funciona correctamente pero a la que borro el ultimo y hago que imprima otra vez todos los elementos de la lista se me desborda la memoria, es decir leo alguna posicion de memoria no declarada, haber si me podéis ayudar porque es muy raro.

Esta es la funcion de borrado:
Código:
void eliminarNode(char dominio[20])
{
	int trobat=0;
	NodeDNS *Aux1;	
	NodeDNS *Anterior;
	Aux1=PrimerNode;
	
	while (Aux1!=NULL && trobat==0)
	{

		if(strcmp(Aux1->nombre,dominio)==0)//Hemos encontrado el elemento a eliminar
		{
			trobat=1;
			if(PrimerNode==UltimNode)//Solament hi ha un element a la llista
			{	
				free(Aux1);
				PrimerNode=NULL;
				UltimNode=NULL;
			}
			
			if(Anterior->DNSseguent==UltimNode) //Queremos elimiar el ultimo elemento
			{				UltimNode=Anterior;
				
				printf("Ultim node ara es %s",UltimNode->nombre);
				printf("\nEl primer node ara es %s",PrimerNode->nombre);
				free(Aux1);
			}

		}
		else
		{
			Anterior=Aux1;
			Aux1=Aux1->DNSseguent;

		}
	}
}
y esta la de imprimir cada elemento de la lista:

Código:
void printarLlistaDNS()
{
	NodeDNS *Temp;	
	Temp=PrimerNode;
	printf("Aux es: %s\n",Temp->nombre);
	while(Temp!=NULL)
	{
		printf("%s ->", Temp->nombre); 
		
		if(Temp==NULL)
		{
			printf("NULL");
		}
		else
		{
		Temp=Temp->DNSseguent;
		}
	}
	printf("\n");
}