codice:
coda * coda::pop ()
{
   nodo * app = head;
   head = head -> next;
   return app;
}
Questa e l'equivalente in stack è sbagliata, il valore di ritorno non è un puntatore a coda, ma a nodo.
inoltre non ti conviene dare come valore di ritorno un elemento nodo (classe usata internamente per costruire la struttura dati), ha più senso dare come valore di ritorno il valore contenuto da nodo, nel tuo caso nodo->inf che è di tipo char.