Following program will insert an element at any position of singly link list.
//////////////////////////////////////////////////////////////////
/// -:Insert an element at any position of singly link list:- ///
////////////////////////////////////////////////////////////
/*****************************************************************
https://wbutassignmentshelp.wordpress.com
*****************************************************************/
# include<stdio.h>
# include<conio.h>
# include<alloc.h>
# include<stdlib.h>
struct node
{ int data;
struct node *link;
};
void append(struct node **,int);
void in_middle(struct node **q,int loc,int num);
void display(struct node *);
void main()
{ struct node *p; /* p = start ptr */
p=NULL;
int num,loc,c;
char choice;
do
{ clrscr();
printf("Program to Insert an element at any position of singly link list ");
printf("\n===================================================================");
printf("\n\n1.Create \\ Appending The List");
printf("\n2.Insert Node In Middle");
printf("\n3.Displaying the list");
printf("\n4.Exit");
printf("\n\nEnter ur Choice : ");
choice=getch();
switch(choice)
{
case '1':
char ans;
do
{
printf("How many times you want to enter : ");
scanf("%d",&c);
for(int i=0;i<c;i++)
{
printf("Enter any number : ");
scanf("%d",&num);
append(&p,num);
}
printf("Enter more (y/n) :");
fflush(stdin);
ans=getchar();
}while(ans !='n');
break;
case '3':
display(p);
getch();
break;
case '2':
printf("\nEnter The Position :");
scanf("%d",&loc);
printf("\nEnter The Data : ");
scanf("%d",&num);
in_middle(&p,loc,num);
break;
case '4':
clrscr();
gotoxy(1,10);printf("\n visit https://wbutassignmentshelp.wordpress.com for more program");
getch();
exit(0);
break;
default:
printf("Invalid choice.Please Enter Correct Choice");
getch();
}
}while(choice !=7);
}
void append(struct node **q,int num)
{ struct node *temp,*r;
temp = *q;
if(*q==NULL)
{ temp = (struct node *)malloc(sizeof(struct node));
temp->data=num;
temp->link=NULL;
*q=temp;
}
else
{ temp = *q;
while(temp->link !=NULL)
{ temp=temp->link;
}
r = (struct node *)malloc(sizeof(struct node));
r->data=num;
r->link=NULL;
temp->link=r;
}
}
void display(struct node *q)
{ if(q==NULL)
{ printf("\n\nEmpty Link List.Can't Display The Data");
getch();
goto last;
}
while(q!=NULL)
{ printf("\n%d",q->data);
q=q->link;
}
last:
}
int count(struct node *q)
{ int c=0;
if(q==NULL)
{ printf("Empty Link List.\n");
getch();
goto last;
}
while(q!=NULL)
{ c++;
q=q->link;
}
last:
return c;
}
void in_middle(struct node **q,int loc,int num)
{ struct node *temp,*n;
int c=1,flag=0;
temp=*q;
if(*q==NULL)
{ printf("\n\nLink List Is Empty.Can't Insert.");
getch();
goto last;
}
else
while(temp!=NULL)
{ if(c==loc)
{ n = (struct node *)malloc(sizeof(struct node));
n->data=num;
n->link=temp->link;
temp->link=n;
flag=1;
}
c++;
temp=temp->link;
}
if(flag==0)
{ printf("\n\nNode Specified Doesn't Exist.Cant Enter The Data");
getch();
}
else
{ printf("Data Inserted");
getch();
}
last:
getch();
}