La funzione non l'ho scritta io, ma l'ho presa da un libro universitario del corso di programmazione. Sfogliandolo ho trovato questo esempio e non capendone a pieno il significato cercavo una spiegazione.

Per quanto riguarda l'alias creato con typedef non ho ancora ben capito a quale elem si riferisce, se quello interno alla struttura o alla struttura stessa.