# Program of Inserting a number in a sorted linked list

```#include <stdio.h>
#include<stdio.h>
#define NULL 0

{
int number;
};
typedef struct linked_lit node;

main()
{
int n;
void create(node *p);
node *insert(node *p, int n);
void print(node *p);
head = (node *)malloc(sizeof(node));
printf(“\\n”);
printf(“Original list: “);
printf(“\\n\\n”);
printf(“Input number to be inserted: “);
scanf(“%d”, &n);

printf(“\\n”);
printf(“New list:  “);
}
void create(node *list)
{
printf(“Input a number \\n”);
printf(“(type –999 at end): “);
scanf(“%d”, &list->number);

if(list->number == -999)
{
list->next = NULL;
}
else    /* create next node */
{
list->next = (node *)malloc(sizeof(node));
create(list->next);
}
return:
}

void print(node *list)
{
if(list->next != NULL)
{
printf(“%d -->”, list->number);

if(list ->next->next = = NULL)
printf(“%d”, list->next->number);

print(list->next);
}
return:
}

node *insert(node *head, int x)
{
node *p1, *p2, *p;
p1 = NULL;
p2 = head;  /* p2 points to first node */

for( ; p2->number < x; p2 = p2->next)
{
p1 = p2;

if(p2->next->next == NULL)
{
p2 = p2->next;   /* insertion at end */
break;
}
}

/*key node found and insert new node */

p = (node )malloc(sizeof(node));  / space for new node */

p->number = x; /* place value in the new node */

p->next = p2; /*link new node to key node */

if (p1 == NULL)
head = p; /* new node becomes the first node */
else
p1->next = p; /* new node inserted in middle */

}

Output
Input a number
(type –999 at end ); 10

Input a number
(type –999 at end ); 20

Input a number
(type –999 at end ); 30

Input a number
(type –999 at end ); 40

Input a number
(type –999 at end ); -999

Original list:     10 -->20-->30-->40-->-999

Input number to be inserted: 25
New list: 10-->20-->25-->30-->40-->-999
```

Didn't find what you were looking for? Find more on Program of Inserting a number in a sorted linked list