Abbiamo un tipo Prodotto_t che contiene informazioni sui prodotti di un supermercato. Ogni Prodotto_t è pensato per far parte di una lista; contiene quindi un riferimento al nodo successivo.
Per creare la lista di prodotti utilizzo un doppio puntatore a Prodotto_t.
Il mio dubbio è su queste due funzioni: è giusto procedere in questo modo? E' sensato creare un doppio puntatore che sarà la lista dei nostri prodotti e poi aggiungervi un prodotto.
codice:
/*
** Inizializza il primo elemento della lista a NULL.
*/
void inizialista(Prodotto_t **lista)
{
	*lista = NULL;
}

/*
** Acquista quantita elementi di product e li inserisce nella lista.
** Restituisce errore se il prodotto non è valido o la quantità inserita è minore
** di zero.
*/
void buyprodotto(Prodotto_t **list, Prodotto_t *product, int quantita)
{
	if (quantita <= 0)
	{
		fprintf(stderr, "addprodotto: Quantita non valida\n");
		return;
	}
	if (product == NULL)
	{
		fprintf(stderr, "addprodotto: Prodotto non valido\n");
		return;
	}
	//Definisco la quanttà di prodotto da aggiungere	
	product->quantita = quantita;	
	Prodotto_t *current;
	
	if (*list == NULL)
	{	
		*list = product;
	}	
	else
	{
		current = *list;
		while ( current != NULL && current->codice != product->codice)
			current = current->next;
		
		if (current == NULL) //arrivati alla fine della lista, prodotto non ancora presente
			current = product;
		else //trovato prodotto con lo stesso codice
			current->quantita += product->quantita;	
	}
}
Grazie mille a tutti epr l'aiuto.