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

[SOLUCIONADO] Eliminar ultimo elemento de una lista enlazada simple en C

Estas en el tema de Eliminar ultimo elemento de una lista enlazada simple en C en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/02/2013, 13:25
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 12 años, 1 mes
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?

Etiquetas: elemento, enlazada, funcion, int, lista, simple, ultimo
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 03:23.