All Functions
#include <stdio.h>
#include <stdlib.h>
typedef struct dll
{
int data;
struct dll *rlink;
struct dll *llink;
}node;
node *newnode,*temp,*start=NULL,*last,*prev,*cur;
int main()
{
int ch;
void create();
void insatbegin();
void insatlast();
void insatrandom();
void delatbegin();
void delatlast();
void delatrandom();
void display();
printf(“enter the choice”);
printf(“1.create\n2.display\n3.insatbegin\n4.insatlast\n5.insatrandom\n6.delatbegin\n7.delatlast\n8.delatrandom”);
scanf(“%d”,&ch);
do
{
switch(ch)
{
case 1:create();
break;
case 2:display();
break;
case 3:insatbegin();
break;
case 4:insatlast();
break;
case 5:insatrandom();
break;
case 6:delatbegin();
break;
case 7:delatlast();
break;
case 8:delatrandom();
break;
case 9:exit(0);
break;
default:printf(“enter correct choice”);
}
}while(ch<9);
return 0;
}
void create()
{
char ch;
int dp;
do
{
newnode=(node*)malloc(sizeof(node));
printf(“enter the data part”);
scanf(“%d”,&dp);
newnode->data=dp;
newnode->rlink=NULL;
newnode->llink=NULL;
if(start==NULL)
{
start=newnode;
last=newnode;
}
else
{
last->rlink=newnode;
newnode->llink=last;
last=newnode;
}
printf(“do you want to continue”);
fflush(stdin);
scanf(“%c”,&ch);
}while(ch==’Y’||ch==’y’);
}
void insatbegin()
{
int dp,pos=1;
newnode=(node*)malloc(sizeof(node));
printf(“enter the datapart”);
scanf(“%d”,&dp);
newnode->data=dp;
newnode->rlink=NULL;
newnode->llink=NULL;
if(pos==1)
{
newnode->rlink=start;
start=newnode;
}
else
{
printf(“element cant be inserted”);
}
}
void insatlast()
{
int dp;
newnode =(node*)malloc(sizeof(node));
printf(“enter the datapart”);
scanf(“%d”,&dp);
newnode->data=dp;
newnode->rlink=NULL;
newnode->llink=NULL;
temp=start;
while(temp->rlink!=NULL)
{
temp=temp->rlink;
}
temp->rlink=newnode;
newnode->llink=temp;
}
void insatrandom()
{
int dp,pos,i=2;
newnode=(node*)malloc(sizeof(node));
printf(“enter the datapart”);
scanf(“%d”,&dp);
printf(“enter the position”);
scanf(“%d”,&pos);
newnode->data=dp;
newnode->rlink=NULL;
newnode->llink=NULL;
temp=start;
while(i<pos&&temp->rlink!=NULL)
{
temp=temp->rlink;
i++;
}
newnode->rlink=temp->rlink;
newnode->llink=temp;
(temp->rlink)->llink=newnode;
temp->rlink=newnode;
}
void delatbegin()
{
if(start==NULL)
{
printf(“deletion is not possible”);
}
else
{
temp=start;
start=start->rlink;
start->llink=NULL;
free(temp);
}
}
void delatlast()
{
if(start==NULL)
{
printf(“list is empty”);
}
else
{
cur=start;
while(cur->rlink!=NULL)
{
prev=cur;
cur=cur->rlink;
}
prev->rlink=NULL;
free(cur);
}
}
void delatrandom()
{
int dp;
if(start==NULL)
{
printf(“list is empty”);
}
else
{
printf(“enter datapart to be deleted”);
scanf(“%d”,&dp);
cur=start;
while(cur->data!=dp&&cur->rlink!=NULL)
{
prev=cur;
cur=cur->rlink;
}
prev->rlink=cur->rlink;
(cur->rlink)->llink=prev;
free(cur);
}
}
void display()
{
node *temp=start;
printf(“start->”);
while(temp->rlink!=NULL)
{
printf(“%d->”,temp->data);
temp=temp->rlink;
}
}