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.
Grazie mille a tutti epr l'aiuto.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; } }

Rispondi quotando