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(); }