Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/02/2013, 13:25
Macas
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 6 meses
Puntos: 0
Eliminar ultimo elemento de una lista enlazada simple en C

Tengo un problema en eliminar el ultimo elemento de una lista en.
Tengo esta estructura:
typedef struct
{
char nombre[20];
struct NodeDNS *DNSseguent;

}NodeDNS;

NodeDNS *PrimerNode;
NodeDNS *UltimNode;

y esta funcion:
void eliminarNode(char dominio[20])
{
int trobat=0;
NodeDNS *Aux1;
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(Aux1->DNSseguent==UltimNode) //Queremos elimiar el ultimo elemento
{
UltimNode=Aux1;
printf("Ultim node ara es %s",UltimNode->nombre);
Aux1=Aux1->DNSseguent;
free(Aux1);
}

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

}
Donde pone que tenemos que eliminar el ultimo elemento, no entra en el if porque nunca se cumple no se que condicion tengo que poner.
Necesito otro puntero? Que apunte al anterior del puntero que uso para moverme por la lista? Creo recordar que hay maneras de no usarlo, usando dobles punteros, lo he probado pero esta mal.

Basicamente el problema que tengo es que no se como acceder a la direccion de memoria anterior a AUX.

Alguna idea?