Here I used asterisk after Node. Actually, why asterisk used for? What if I don't put any asterisk after Node (Both Node are structure).
It's a pointer.
A pointer, like its name implies, points to an actual object in memory. (More technically, it holds an address to the memory location).
In your Node example, it is necessary because using a plain object is impossible.
Think of a struct like a box. The box has compartments, which hold the items in it. By necessity, the compartment must be smaller than the box itself.
Now, imagine trying to stuff a Node into another Node. This is like trying to stuff a box into a compartment of a box of the same size -- it just doesn't fit.
However, if we use a pointer, we get around that problem. We slip in a piece of paper into the box that says "the next box is over there", so we don't try to stuff boxes in boxes.
The basic syntax to declare a pointer is
type * var_name. The most likely confusion you have is which one is the type, and which one is the variable name.
struct Node * next,
struct Node is the type, and
next is the variable name.
int is the type, and
ptr is the variable name.
Note that spaces are completely irrelevant.
int* ptr is the same as
int *ptr is the same as
int * ptr.