Va fuori dall' else perché:
-Se la lista contiene elementi, l' elemento creato viene aggiunto all' elemento che era in coda, e diventa la nuova coda;
-Se la lista non contiene elementi, l' elemento creato diventa la coda, ma anche la testa.
Direi che è corretto il codice che hai scritto.Ma prova sempre a debuggarlo, che è il miglior metodo per capire se funziona.