Saludos a todos.
Estoy liado con las listas en C y he creado la siguiente función, me gustaría saber si esta bien implementada para no tener luego problema con los punteros.
Código:
int del_list(lista **primero,int a){
lista *aux,*ant;
if(a == 0){printf("El elemento no existe\n"); return 0;}
/* if a es mayor que los elementos que contiene la lista, el elemento no existe */
if(a == 1){
ant = *primero;
*primero = ant->next;
free(ant);
} else{
a = a - 2;
ant = *primero;
while(a >0 && aux != NULL){
ant = ant->next;
a--;
}
aux = ant->next;
ant->next = ant->next->next;
free(aux);
}
}
lista *aux,*ant;
if(a == 0){printf("El elemento no existe\n"); return 0;}
/* if a es mayor que los elementos que contiene la lista, el elemento no existe */
if(a == 1){
ant = *primero;
*primero = ant->next;
free(ant);
} else{
a = a - 2;
ant = *primero;
while(a >0 && aux != NULL){
ant = ant->next;
a--;
}
aux = ant->next;
ant->next = ant->next->next;
free(aux);
}
}
Lo ultimo que me faltaría por hacer es que si introduzco un elemento mayor que el numero de elementos que contiene la lista me diga elemento invalido, pero por lo demás me gustaría saber si esta bien implementada.
Un saludo.