Here is the structure declare code.
struct list_el { int val; struct list_el * next; }; typedef struct list_el item;
And when I
A typedef is just a new name for an already existing type. defines are handled by the preprocessor while typedefs are handled by the C compiler itself. [copied from this link]
check this question: Are typedef and #define the same in c?