codice:
cancella (&scorri); //purchè scorri abbia l'indirizzo della testa.
E poi metti coda e testa a NULL, visto che non puntano a nulla.

La funzione invece necessita di parametri perchè deve dirgli quale lista cancellare.

Di solito un adt di tipo lista testa-coda si dichiara in questo modo:

codice:
struct tc {
    struct lista * testa;
    struct lista * coda;
} pt_tc;
Cosi basta che fai:

codice:
pt_tc.testa = indirizzo testa;
pt_tc.coda = indirizzo coda;
scorri invece lo usi come puntatore che scorre la lista.

Ciao.