Why is the structure declared Node in the following data structure, and the pointer field in the structure is also a Node

  c++, question

typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList;

I wonder if your question is why we can use Node * next as its element before node is defined.
If that’s what you’re asking, I can say what I think. Because pointers in C language are 32-bit or 64-bit data, pointers occupy the same memory space in the same system. So in the compilation phase,

typedef struct Node
 {
 ElemType data;
 struct Node *next;
 }Node;

And

typedef struct Node
 {
 ElemType data;
 xxx *next;
 }Node;

Is equivalent,struct Node *next;Andxxx *next;Both are 32-bit or 64-bit data types. Only after Node is used later,struct Node *next;Andxxx *next;It makes a difference.
You can try this,

typedef struct Node
 {
 ElemType data;
 struct Node next;
 }Node;

Next is not a pointer, but a Node. This will make a mistake

error: field ‘next’ has incomplete type

Because Node has not been defined at this time, the compiler does not know how much memory space to allocate to him.

If that’s not what you want to ask, then ignore my answer.