Quando scrivi il prototipo della showlist cosi'
showlist(pbuff);
stai dicendo al compilatore di assumere che la funzione restituisca un int. E' come se scrivessi
int showlist(pbuff);
Quando la dichiari nel codice invece, questa diventa
void showlist(pbuff primoel)
ovvero non restituisce valori. Questa differenza determina l'errore di compilazione.
Per evitare questi problemi si usa scrivere il main alla fine del codice sorgente in modo evitando di scrivere i prototipi delle funzioni.