Я предпочитаю эту версию:
typedef struct listLink listLink ;
struct listLink{
listLink *next;
listLink *prev;
void *data;
} ;
Он четко отделяет структуру от членов и переменных.
Использование одного и того же имени для struct и typedef, struct listLink, listLink
, не является проблемой, поскольку они имеют отдельные пространства имен.