struct Node *addToEmpty(struct Node *last, int data) 
{ 
  // This function is only for empty list 
  if (last != NULL) 
    return last; 
  // Creating a node dynamically. 
  struct Node *temp =  
       (struct Node*)malloc(sizeof(struct Node)); 
  // Assigning the data. 
  temp -> data = data; 
  last = temp; 
  // Creating the link. 
  last -> next = last; 
  return last; 
} 
struct Node *addBegin(struct Node *last, int data) 
{ 
  if (last == NULL) 
      return addToEmpty(last, data); 
  struct Node *temp =  
        (struct Node *)malloc(sizeof(struct Node)); 
  temp -> data = data; 
  temp -> next = last -> next; 
  last -> next = temp; 
  return last; 
} 
i wanna know why "*addToEmpty" is used not "addToEmpty".
what is "*" mean in struct?
I know it's basic question. but I can't find the answer.
I'm gonna be filling well today if you reply to my question
P.S. it's c++ code.