D link list.
#include<iostream>
#include<malloc.h>
using namespace std;
void inslast();
void insfirst();
void count();
void insmiddle();
void deletefirst();
void deletelast();
void deletemiddle();
void display();
void revdisplay();
struct dlist{
int sid;
struct dlist *next;
struct dlist *prev;
}*head,*last,*node,*temp;
int c1;
int main()
{
int ch;
while(1)
{
cout<<"\nPress 1 for insert at last: ";
cout<<"\npress 2 for insert at first: ";
cout<<"\npress 3 for count: ";
cout<<"\npress 4 for insert at iddle: ";
cout<<"\npress 5 for delete at first: ";
cout<<"\npress 6 for delete at last: ";
cout<<"\npress 7 for delete at middle: ";
cout<<"\npress 8 for display: ";
cout<<"\npress 9 for exit:";
cout<<"\nPress 10 for reverse display: ";
cout<<"\nEnter your choice :";
cin>>ch;
switch(ch)
{
case 1:
inslast();
break;
case 2:
insfirst();
break;
case 3:
count();
break;
case 4:
insmiddle();
break;
case 5:
deletefirst();
break;
case 6:
deletefirst();
break;
case 7:
deletemiddle();
break;
case 8:
display();
break;
case 10:
revdisplay();
break;
case 9:
exit(0);
break;
default :
cout<<"\nINVALID INPUT: ";
}
}
return 0;
}
void inslast()
{
node=(struct dlist*)malloc(sizeof(struct dlist));
cout<<"\nEnter student id: ";
cin>>node->sid;
node->next='\0';
node->prev='\0';
if(head=='\0')
{
head=node;
last=node;
}
else
{
last->next=node;
node->prev=last;
last=node;
}
}
void insfirst()
{
node=(struct dlist*)malloc(sizeof(struct dlist));
cout<<"\nEnter student id: ";
cin>>node->sid;
node->next=head;
node->prev='\0';
if(head=='\0')
{
head=node;
last=node;
}
else
{
node->next=head;
head->prev=node;
head=node;
}
}
void count()
{
c1=0;
temp=head;
while(temp!='\0')
{
c1++;
temp=temp->next;
}
}
void insmiddle()
{
int pos,c=1;
cout<<"\nEnter position: ";
cin>>pos;
count();
if(pos==1)
{
insfirst();
}
else if(pos==c1+1)
{
inslast();
}
else if(pos > c1+1 || pos < 1)
{
cout<<"\nNA";
return;
}
else
{
node=(struct dlist*)malloc(sizeof(struct dlist));
cout<<"\nEnter student id: ";
cin>>node->sid;
temp=head;
while(c != pos-1)
{
temp=temp->next;
c++;
}
node->next=temp->next;
node->prev=temp;
temp->next->prev=node;
temp->next=node;
}
}
void deletefirst()
{
if(head =='\0')
{
cout<<"\nList is empty: ";
return;
}
temp=head;
head=head->next;
if(head !='\0')
{
head->prev='\0';
}
else
{
last='\0';
}
cout<<"\nDeleted : "<<temp->sid;
free(temp);
}
void deletelast()
{
if(last=='\0')
{
cout<<"\nList is empty: ";
return;
}
temp=last;
last=last->prev;
if(last != '\0')
{
last->next='\0';
}
else
{
head='\0';
}
cout<<"\nDeleted"<<temp->sid;
free(temp);
}
void deletemiddle()
{
int pos,c=1;
cout<<"\nEnter position: ";
cin>>pos;
count();
if(pos==1)
{
deletefirst();
}
else if(pos==c1)
{
deletelast();
}
else if(pos>c1 || pos<1)
{
cout<<"\nNA ";
return;
}
else
{
temp=head;
while(c!=pos)
{
temp=temp->next;
c++;
}
temp->prev->next=temp->next;
temp->next->prev=temp->prev;
cout<<"\nDELETED "<<temp->sid;
free(temp);
}
}
void display()
{
if(head=='\0')
{
cout<<"\nList is empty: ";
return;
}
temp=head;
while(temp != '\0')
{
cout<<temp->sid<<"-->";
temp=temp->next;
}
}
0 Comments