Last time I checked in C, all pointer types where the same storage size. There's no need to define the same data structure multiple times by using templates. You just use casts.
Now, that said, it is possible to write generic link list routines (I've done it) but the devil is in the details.