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?