Question
Re-write add so that it adds in alphabetical order. Do not add a name if it already exists in the list. That is, before adding, traverse the list to make sure the name is not already there. Print an error message if it exists.
Explanation / Answer
Person *add(Person *ptr, char *n, int a) { Person *newNode = malloc( sizeof(Person) ); newNode->name = malloc( strlen(n) + 1 ); strcpy(newNode->name, n); newNode->age = a; newNode->next = ptr; if(ptr == NULL) { return newNode; } else if(strcmp(n, ptr->name) < 0) { newNode->next = ptr; return newNode; } else { Person *temp = ptr; while(temp->next != NULL) { if(strcmp(n, temp->next->name) < 0) { newNode->next = temp->next; temp->next = newNode; return ptr; } temp = temp->next; } temp->next = newNode; return ptr; } }