Codigo... lo que se dice codigo... mas bien tengo poco
eske e mirado varios manuales sobre implementar una lista enlazada en C, (funciones basicas: buscar, eliminar e insertar ), y en varios de ellos, no en todos, cuando se quiere eliminar o añadir un nodo, se pasa el 1ºer nodo de la lista con un doble puntero. Y eso es lo que no logro entender, ya que, por ejemplo:
Código:
struct contacto{
int numero_telefono;
char[20] Nombre;
char[50] Apellidos;
char[50] Direccion;
struct contacto *siguiente;
}
void procesaContacto(struct contacto *persona){
//Rellena los campos de persona
}
struct contacto *removeContacto(struct contacto *persona,int posición){
struct contacto *anterior=NULL;
while(posicion>1){
anterior=persona;
persona=persona->siguiente;
posicion--;
}
if(anterior==NULL){
anterior= persona->siguiente;
free(persona);
return anterior;
}else{
anterior->siguiente=persona->siguiente;
free(persona);
return NULL;
}
}
struct contacto *gestionarAgenda(struct contacto *contacto){
//Menu de opciones
//Switch con opciones: añadir, buscar...
struct contacto *aux=removeContacto(contacto,1);//Aqui tengo la duda
return aux;
}
int main(){
struct contacto *primero,*aux;
struct contacto *contacto=(struct contacto*)malloc(sizeof(struct contacto);
aux=gestionarAgenda(contacto);
if(aux!=NULL){
primero=aux;
}
}
Como e puesto en el codigo, la duda la tengo a la hora de llamar a la funcion removeContacto. Y lo que pido seria si por favor me pudiesen explicar un poco la diferencia entre la declaracion actual de la funcion
Código:
contacto *removeContacto(contacto *persona, int posicion);
y esta otra declaracion
Código:
contacto *removeContacto(contacto **persona,int posicion);
No pido las diferencias "lexicas" en C( es decir, usar (*contacto)->nombre para acceder al campo,etc.. ), si no las diferencias a la hora de que C trabaje el codigo. Gracias