ciao a tutti
ho una situazione di questo tipo:

devo scrivere una funzione che inserisca una struttura in coda ad una coda di strutture.

la signatura e la seguente
void insertBackThreadQ(tcb_t **tp , tcb_t *t_ptr) dove tcb_t è una struttura.

tp (tail pointer) punta al puntatore all' ultimo elemento della coda e t_ptr punta all' elemento da aggiungere in coda.

la struttura tcb_t ha 2 puntatori
tcb_t *succ
tcb_t *prec
per concatenare le celle

ho pensato di scrivere la funzione in questo modo

if(**pt==NULL) //se la coda è vuota
*pt=t_ptr; /* il puntatore puntato da pt punta (cioè quello che punta al fondo) all' elemento appena aggiunto */

else{
//la coda non è vuota
// devo sistemare succ e prec dell' elemento appena aggiunto
// la coda è circolare
t_ptr->succ=*tp->next; // next dell' ultimo aggiunto è uguale a next dell' vecchio fondo cioè il primo essendo circolare

t_ptr->prec=*tp // il precedente è il vecchio fondo

*tp->next->prec=t_ptr; // sistemo il prec del primo mettendogli quello apena aggiunto
*tp->succ=t_ptr;
}

questa funzione viene testata cosi:


tcb_t *qa, *q;


q=indirizzo di una struttura
qa=makeEmptyThreadQ() che mette null in qa

insertBackThreadQ( &qa , q)

la prima volta visto che qa è null, qa dovrebbe puntare a t_ptr
quando poi viene rilanciata dovrebbe eseguire l' else e concatenare il nuovo elemento,
ma quando compilo mi da errori tipo: assegnamento errato o che l' espressione da assegnare non è una struttura.

mi spiegate dove sbaglio?