Skip to content

Instantly share code, notes, and snippets.

@raju249
Created July 21, 2015 11:10
Show Gist options
  • Save raju249/8d4fd0ac1ba3a59c4b54 to your computer and use it in GitHub Desktop.
Save raju249/8d4fd0ac1ba3a59c4b54 to your computer and use it in GitHub Desktop.
/**
* 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