ho da poco approcciato alle liste e sto cercando si svolgere un esercizio in cui ho una lista che ha come elementi delle struct.
In particolare, ho le seguenti dichiarazioni:
- Codice:
struct libro {
char *nome;
char *genere;
int quantita;
};
struct nodo {
struct libro l;
struct nodo *next;
};
La prima struct contiene le informazioni su un libro, cioè il nome, il genere e la quantità, cioè il numero di copie che ho a disposizione.
La seconda struct invece rappresenta una lista che ha come elementi la struct libro, cioè i libri.
L'esercizio richiede di svolgere alcune funzioni, che ho gia implementato per liste di interi e funzionano.
Il problema ora è che ho una lista di struct e non riesco ad adattarle a questa situazione.
Ad esempio, partendo dall'inizio, cioè l'acquisizione in input della quantità di ogni libro, come devo fare?
Io per le liste di interi utilizzo il seguente codice:
- Codice:
struct elemento {
int inf;
struct elemento *next;
};
typedef struct elemento* list;
void inserisci_coda (list *lista, int elem) {
list l = *lista;
// caso lista vuota (N.B. fondamentale l'utilizzo di *lista)
if (*lista == NULL) {
*lista = malloc(sizeof(struct elemento));
(*lista) -> inf = elem;
(*lista) -> next = NULL;
}
// caso lista con almeno un elemento
else {
while (l -> next != NULL) { // cerco l'ultimo elemento
l = l -> next; // l ha l'indirizzo dell'ultimo elemento
}
l -> next = malloc(sizeof(struct elemento));
l = l -> next;
l -> inf = elem;
l -> next = NULL;
}
}
Ovviamente ho provato diverse soluzioni ma vengono un sacco di errori.
Grazie!