This is just another interview question.
Can we have a linked list of different data types, i.e. each element in a linked list can have different structure or union
Actually, you don't have to put the pointer first in the structure, you can put it anywhere and then find the beginning fo the struct with a containerof() macro. The linux kernel does this with its linked lists.
http://isis.poly.edu/kulesh/stuff/src/klist/