node *insert(node *head)
{
node *find(node *p, int a);
node *new; /* pointer to new node */
node *n1; /* pointer to node preceding key node */
int key;
int x; /* new item (number) to be inserted */
printf(“Value of new item?”);
scanf(“%d”, &x);
printf(“Value of key item ? (type –999 if last) “);
scanf(“%d”, &key);
if(head->number == key) /* new node is first */
{
new = (node *)malloc(size of(node));
new ->number = x;
new->next = head;
head = new;
}
else/* find key node and insert new node */
{ /* before the key node */
n1 = find(head, key); /* find key node */
if(n1 == NULL)
printf(“\n key is not found \n”);
else/* insert new node */
{
new = (node *)malloc(sizeof(node));
new->number = x;
new->next = n1->next;
n1->next = new;
}
}
return(head);
}
node *find(node *lists, int key)
{
if(list->next->number == key) /* key found */
return(list);
elseif(list->next->next == NULL) /* end */
return(NULL);
else
find(list->next, key);
}