#include <stdio.h>
#include<stdio.h>
#define NULL 0
struct linked_list
{
int number;
struct linked-list *next;
};
typedef struct linked_lit node;
main()
{
int n;
node *head;
void create(node *p);
node *insert(node *p, int n);
void print(node *p);
head = (node *)malloc(sizeof(node));
create(head);
printf(“\n”);
printf(“Original list: “);
print(head);
printf(“\n\n”);
printf(“Input number to be inserted: “);
scanf(“%d”, &n);
head = inert(head,n);
printf(“\n”);
printf(“New list: “);
print(head);
}
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 fornew 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 */
return (head);
}
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