I'm sure this has been asked before, but I cannot find anything on this website or any other about it after searching for quite awhile. 

I''m having trouble getting the values of structures that I'm creating and modifying in a function. The code looks something like: 

```
struct node {
  char name[35];
  int employeeID;
  struct node *next;
}

typedef struct node employee;

void insertInOrder(employee *head, employee *curr) {
  if (head == NULL) {
    *curr->next = *head;
    *head = *curr;
  } else {
    if ((head->employeeID<curr->employeeID)&&(curr->employeeID <head->next->employeeID)) {
      *curr->next = *head->next;
      *head->next = *curr;
    } else {
      insertInOrder(head->next, curr);
    }
  }
}

void addEmployee(char name[], employee *head, employee *curr) {
  int id;
  scanf("%d", &id);
  curr = malloc(sizeof(employee));
  strcpy(curr->name, name);
  curr->employeeID = id;
  insertInOrder(head, curr);
}

int main(void) {
  char name[35];
  int quit = 1;
  employee *head, *curr;
  head = NULL;
  printf("Enter data about the books: \n");
  while (quit) {
    scanf("%[^\n]%*c", title);
    if (title[0] != '#') {
        addBook(name, head, curr);
    } else {
        quit = 0;
    }
}

```

During my debugging, my code iterates into all of my functions, but once I get back to main after adding all of the data I want, all of the variables are empty. I know it has something to do with the way I'm using or passing pointers, but when I look at the code I keep coming to the logical conclusion that what I have should do what I want. Please, someone point out where my algorithm is flawed.