#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int choice,i,n;
struct node
{
int ssn;
char name[20],empid[10],desig[20],dep[20];
float salary;
struct node *prev;
struct node *next;
}*start=NULL,*last=NULL,*ptr,*new,*cur;
void create()
{
int ssn;
char name[20],empid[10],desig[20],dep[20];
float salary;
printf("ENTER THE EMPLOYEE NAME,ID,DESIGNATION,DEPARTMENT,SSN,SALARY :\n");
scanf("%s%s%s%s%d%f",name,empid,desig,dep,&ssn,&salary);
new=(struct node *)malloc(sizeof(struct node));
new->prev=NULL;
new->next=NULL;
strcpy(new->name,name);
strcpy(new->empid,empid);
strcpy(new->desig,desig);
strcpy(new->dep,dep);
new->ssn=ssn;
new->salary=salary;
}
void insertbeg()
{
create();
if(start==NULL)
{
start=new;
last=new;
}
else
{
new->next=start;
start->prev=new;
start=new;
}
}
void insertend()
{
create();
if(start==NULL)
{
start=new;
last=new;
}
else
{
last->next=new;
new->prev=last;
last=new;
}
}
void display()
{
int count=0;
if(start==NULL)
printf("LIST IS EMPTY\n");
else
{
ptr=start;
printf("THE EMPLOYEE DETAILS ARE :\n");
printf("NAME\tEMP ID\tDESIGNATION\tDEPARTMENT\tSSN\tSALARY\n");
while(ptr!=NULL)
{
printf("%s\t%s\t%s\t%s\t\t%d\t%.2f\n",ptr->name,ptr->empid,ptr->desig,ptr->dep,ptr->ssn,ptr->salary);
ptr=ptr->next;
count++;
}
printf("THE NO. OF NODES PRESENT IS :%d\n",count);
}
}
void deldis(struct node *ptr)
{
printf("THE DELETED EMPLOYEE DETAILS ARE :\n");
printf("NAME\tEMP ID\tDESIGNATION\tDEPARTMENT\tSSN\tSALARY\n");
printf("%s\t%s\t%s\t%s\t\t%d\t%.2f\n",ptr->name,ptr->empid,ptr->desig,ptr->dep,ptr->ssn,ptr->salary);
}
void deletebeg()
{
if(start==NULL)
{
printf("NOTHING TO DELETE\n");
return;
}
else if(start->next==NULL)
{
ptr=start;
start=NULL;
last=NULL;
}
else
{
ptr=start;
start=start->next;
start->prev=NULL;
}
deldis(ptr);
free(ptr);
}
void deleteend()
{
if(start==NULL)
{
printf("NOTHING TO DELETE\n");
return;
}
else if(start->next==NULL)
{
ptr=start;
start=NULL;
last=NULL;
}
else
{
ptr=last;
last=last->prev;
last->next=NULL;
}
deldis(ptr);
free(ptr);
}
void displayrev()
{
int count=0;
if(last==NULL)
printf("LIST IS EMPTY\n");
else
{
ptr=last;
printf("THE EMPLOYEE DETAILS ARE :\n");
printf("NAME\tEMP ID\tDESIGNATION\tDEPARTMENT\tSSN\tSALARY\n");
while(ptr!=NULL)
{
printf("%s\t%s\t%s\t%s\t\t%d\t%.2f\n",ptr->name,ptr->empid,ptr->desig,ptr->dep,ptr->ssn,ptr->salary);
ptr=ptr->prev;
count++;
}
printf("THE NO. OF NODES PRESENT IS :%d\n",count);
}
}
void search()
{
int key;
printf("ENTER THE SSN TO BE SEARCHED\n");
scanf("%d",&key);
ptr=start;
while(ptr!=NULL)
{
if(ptr->ssn==key)
{
printf("THE EMPLOYEE DETAILS ARE :\n");
printf("NAME\tEMP ID\tDESIGNATION\tDEPARTMENT\tSSN\tSALARY\n");
printf("%s\t%s\t%s\t%s\t\t%d\t%.2f\n",ptr->name,ptr->empid,ptr->desig,ptr->dep,ptr->ssn,ptr->salary);
return;
}
ptr=ptr->next;
}
printf("SEARCH UNSUCCESSFUL\n");
}
void deletesec()
{
if((start==NULL)||(start->next==NULL))
{
printf("UNABLE TO DELETE\n");
return;
}
ptr=start->next;
if(ptr->next==NULL)
{
start->next=NULL;
last=start;
}
else
{
cur=ptr->next;
start->next=cur;
cur->prev=start;
}
deldis(ptr);
free(ptr);
}
void main()
{
while(1)
{
printf("------MENU-------\n1. INSERT N EMPLOYEE DETAILS\n");
printf("2. INSERT DETAILS AT BEGINNING\n3. INSERT DETAILS AT END\n");
printf("4. DELETE AT THE BEGINNING\n5. DELETE AT THE END\n");
printf("6. DISPLAY\n7. DISPLAY REVERSE\n8. SEARCH\n");
printf("9. DELETE SECOND NODE\n10. EXIT\nENTER YOUR CHOICE :\n");
scanf("%d",&choice);
switch(choice)
{
case 1:printf("ENTER THE NO. OF EMPLOYEES :\n");
scanf("%d",&n);
for(i=0;i<n;i++)
insertend();
break;
case 2:insertbeg();
break;
case 3:insertend();
break;
case 4:deletebeg();
break;
case 5:deleteend();
break;
case 6:display();
break;
case 7:displayrev();
break;
case 8:search();
break;
case 9:deletesec();
break;
case 10:exit(0);
default:printf("INVALID CHOICE \n");
}
}
}
Referred From : GURUPRASAD M S
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void read();
void insertatfront();
void deleteatfront();
void insertatend();
void deleteatend();
void display();
struct node
{
char ssn[20],name[20],dept[20],desg[20];
float sal;
int ph;
struct node* right;
struct node* left;
}*root=NULL,*temp=NULL,*cur=NULL,*pre=NULL,*p=NULL;
void main()
{
int ch,n;
while(1)
{
printf("\n************MENU**************");
printf("\n\n1.CREATE A DLL OF N EMPLOYEES DATA BY USING END INSERTION\n2.INSERT AT FRONT\n3.DELETE AT FRONT\n4.INSERT AT END\n5.DELETE AT END\n6.DISPLAY\n7.EXIT\n\nEnter your choice\n");
scanf("%d",&ch);
switch(ch)
{
case 1:printf("Enter the Number of Employees\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
insertatend();
}
break;
case 2:insertatfront();break;
case 3:deleteatfront();break;
case 4:insertatend();break;
case 5:deleteatend();break;
case 6:display();break;
case 7:exit(0);
default:printf("*******ENTER A VALID CHOICE*******\n");
}
}
}
void read()
{
char ssn[20],name[20],dept[20],desg[20];
float sal;
int ph;
temp=root;
temp=(struct node*)malloc(sizeof(struct node));
temp->right=NULL;
temp->left=NULL;
printf("\nENTER THE SSN,NAME,DEPARTMENT,DESIGNATION,SALARY,PHONE NO OF EMPLYOEE\n");
scanf("%s %s %s %s %f %d",ssn,name,dept,desg,&sal,&ph);
strcpy(temp->ssn,ssn);
strcpy(temp->name,name);
strcpy(temp->dept,dept);
strcpy(temp->desg,desg);
temp->sal=sal;
temp->ph=ph;
}
void insertatfront()
{
read();
if(root==NULL)
root=temp;
else
{
temp->right=root;
root->left=temp;
root=temp;
}
}
void display()
{
int num=0;
temp=root;
if(root==NULL)
{
printf("\nEMPLYOEE DETAILS NOT FOUND\n");
}
else
{
printf("DETAILS OF EMPLOYEE:\n");
while(temp!=NULL)
{
printf("%s %s %s %s %f %d \n",temp->ssn,temp->name,temp->dept,temp->desg,temp->sal,temp->ph);
temp=temp->right;
num=num+1;
}
printf("NUMBER OF NODES=%d\n",num);
}
}
void deleteatfront()
{
cur=root;
if(root==NULL)
{
printf("\n*******EMPLOYEE DETAILS NOT FOUND********\n");
return;
}
else if(root->right==NULL)
{
root=NULL;
}
else
{
root=root->right;
root->left=NULL;
}
printf("DETAILS OF DELETED EMPLOYEE:\n");
printf("%s %s %s %s %f %d \n",cur->ssn,cur->name,cur->dept,cur->desg,cur->sal,cur->ph);
free(cur);
}
void insertatend()
{
read();
if(root==NULL)
{
root=temp;
}
else
{
p=root;
while(p->right!=NULL)
{
p=p->right;
}
p->right=temp;
temp->left=p;
}
}
void deleteatend()
{
if(root==NULL)
{
printf("\n**********EMPLOYEE DETAILS NOT FOUND*********\n");
return;
}
else if(root->right==NULL)
{
cur=root;
root=NULL;
}
else
{
cur=root;
while(cur->right!=NULL)
{
pre=cur;
cur=cur->right;
}
pre->right=NULL;
}
printf("\nDETAILS OF DELETED EMPLOYEE:\n");
printf("%s %s %s %s %f %d \n",cur->ssn,cur->name,cur->dept,cur->desg,cur->sal,cur->ph);
free(cur);
}








