The approved way to declare two structs each of which has a
member that is a pointer to the other type of struct, is:
struct a;
struct b {
struct *a;
};
struct a {
struct *b;
};
Yes, I know it looks unbelievable. This kludge is present
precisely to handle this kind of problem.