Oggi mi sono messo a studiare le code.
Ho scritto un po' di funzioni "secondarie" e adesso mi stavo cimentando a scrivere la funzione enqueue che dovrebbe inserire in coda un elemento, ma ho problemi a capire come comportarmi quando devo inserire un elemento nel caso la coda non sia vuota.
Vi posto il codice:
codice:
void enqueue(coda *c, int el)
{
nodo *n = (nodo *) malloc(sizeof(nodo)); // alloco spazio per il nuovo elemento
n->d = el; // inserisco il valore passato come input al nuovo elemento
if (!coda_vuota(*c)) // se la pila non ha elementi entra nell'if...
{
c->testa = n;
c->coda = c->testa;
}
else //...altrimenti...e qua ho problemi
c->coda->next = n;
/*La precedente riga è sicuramente sbagliata, ma non riesco a trovare una soluzione alternativa. Se stampo il contenuto della coda per vedere se tutto è ok la funzione per la stampa va in loop e stampa numeri in continuazione*/
c->num_elem++;
}
Cosa sbaglio??
Grazie