Created
July 21, 2015 11:10
-
-
Save raju249/8d4fd0ac1ba3a59c4b54 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Tries to insert a number into list. | |
*/ | |
void insert(void) | |
{ | |
// try to instantiate node for number | |
node* newptr = malloc(sizeof(node)); | |
if (newptr == NULL) | |
{ | |
return; | |
} | |
// initialize node | |
printf("Number to insert: "); | |
newptr->n = GetInt(); | |
newptr->next = NULL; | |
// check for empty list | |
if (first == NULL) | |
{ | |
first = newptr; | |
} | |
// else check if number belongs at list's head | |
else if (newptr->n < first->n) | |
{ | |
newptr->next = first; | |
first = newptr; | |
} | |
// else try to insert number in middle or tail | |
else | |
{ | |
node* predptr = first; | |
while (true) | |
{ | |
// avoid duplicates | |
if (predptr->n == newptr->n) | |
{ | |
free(newptr); | |
break; | |
} | |
// check for insertion at tail | |
else if (predptr->next == NULL) | |
{ | |
predptr->next = newptr; | |
break; | |
} | |
// check for insertion in middle | |
else if (predptr->next->n > newptr->n) | |
{ | |
newptr->next = predptr->next; | |
predptr->next = newptr; | |
break; | |
} | |
// update pointer | |
predptr = predptr->next; | |
} | |
} | |
// traverse list | |
traverse(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment