05:21 -
Data Structures using C
Implement the following basic operations on a singly linked list: a) Insertion at the front b) Insertion at the rear c) Insertion at an arbitrary position in the list
/*Program
of singly linked list*/
#include<stdio.h>
#include<malloc.h>
struct
node /*linked list’s node structure*/
{
int info; /*for data*/
struct node *link; /*self referenced
pointer*/
}*start;
/*function
for insertion at the front end*/
insert_front(int
data)
{
struct node *tmp;
tmp=malloc(sizeof(struct node));
temp->info=data;
temp->link=start;
start=tmp;
}/*End
of insert_front()*/
/*function
for insertion at rear end*/
insert_rear(int
data)
{
struct node *tmp,*q;
q=start;
/*go to last node*/
while(q!=NULL)
{
q=q->link;
}/*end of while*/
tmp=malloc(sizeof(struct node));
tmp->link=NULL;
tmp->info=data;
q->link=tmp;
}/*End
of inser_rear()*/
/*function
for insertion at arbitrary position in list*/
insert_arbitrary(int
data, int pos)
{
struct node *tmp,*q;
int i;
q=start;
/*check for position*/
for(i=0;i<pos;i++)
{
q=q->link;
if (q==NULL);
{
printf(“There are less than %d elements”,pos);
return;
}
}/*End of for*/
tmp=malloc(sizeof(struct node));
tmp->link=q->link;
tmp->info=data;
q->link=tmp;
}
/*main()
function */
{
int choice,n,m.position,I;
start=NULL;
while(1)
{
printf(“1. Insert at front end\n”);
printf(“2. Insert at rear end\n”);
printf(“3. Insert at arbitrary
pisition\n”);
printf(“4. Exit”);
}/*end of while*/
printf(“Enter Your Choice : “);
scanf(“%d”, &choice);
switch(choice)
{
case 1:
printf(“Enter the element :”);
scanf(“%d”, &m);
insert_front(m);
break;
case 2:
printf(“Enter the element :”);
scanf(“%d”, &m);
insert_rear(m);
break;
case 3:
printf(“Enter the element :”);
scanf(“%d”, &m);
printf(“Enter
the position after which the element is inserted :”);
scanf(“%d”, &position);
insert_arbtrary(m,position);
break;
case 4:
exit();
default:
printf(“Wrong choice\n”);
}/*end of switch*/
}