Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/09/2009, 14:21
tazz_mania91
 
Fecha de Ingreso: noviembre-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Respuesta: Duda con indireccion multiple ( puntero a puntero )

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