I am studying code examples from my professor in order to become better acquainted with linked data structures.
In our linked-list.c example the professor defines a type Node as follows:
typedef struct node {
int data;
struct node *next;
} Node;
What's the point of the lower case node? I was under the impression that you could just write, for example:
typedef struct {
int data;
struct node *next;
} Node;
and then use Node as its own type. Does it have something to do with the fact that if you don't include a lower case node then when the compiler is evaluating the code it will not be able to understand what is meant by "struct node *next"?
Nodeisn't the name since it's just a typedef hack to avoid needing to usestruct nodeeverywhere.struct node *next;will just declare a new (incomplete) type.typedef struct { int data; struct node *next; } Node;, the one thing that is guaranteed is that the membernextdoes not point to anotherNode. It points to some other structure type calledstruct nodethat is not otherwise related toNodeat all.