The follwing declaration is valid.
struct node { int a; struct node *next; };
However, when we define the following, it gives error.
Your second declaration would define a struct which is infinitely deeply nested, which is impossible.