typedef principalmente se usa para crear sinonimos de tipo. Primeros defines con typedef el sinonimo y despues durante el codigo lo utilizas. Sirve para hacer mas vistozo y documentar el codigo, como asi tambien puede servir para generar portabilidad entre distintas plataformas. Ejemplo:
En este ejemplo i es una variable del tipo int.
Código C:
Ver originalstruct persona {
int dni;
char nombre[50];
}
typedef struct persona Persona;
strcut persona per;
Persona per2;
Aca per y per2 tienen el mismo tipo, son una structura llamada persona.
Seguramente en las listas tienes cosas como esta:
Código C:
Ver originaltypedef int elemento;
typedef struct _Nodo {
elemento e:
struct _Nodo * next;
} nodo;
nodo primer_elemento;
Con esa definicion simplemente defines variables del tipo nodo y hacen mas visto al codigo como asi mas entendible.
Para mas informacion esta Google o la Wiki
http://es.wikipedia.org/wiki/Typedef