/* INSERTION, DELETION AND DISPLAY OF DOUBLY LINKED LIST*/
#include<iostream.h>
#include<conio.h>
class linklist
{
private:
struct dnode
{
dnode * prev;
int data;
dnode * next;
}*p;
public:
linklist();
void append(int num);
void addatbeg(int num);
void addafter(int loc,int num);
void deleten(int num);
void display();
~linklist();
};
linklist::linklist()
{
p=NULL;
}
void linklist::append(int num)// CREATE A NODE
{
dnode * q,*r;
q=p;
if(q==NULL)// IF CREATE NODE IS FIRST NODE THEN IF BODY WILL EXECUTE,OTHERWISE ELSE BODY EXECUTE
{
q=new dnode;
q->prev=NULL;
q->data=num;
q->next=NULL;
p=q;
}
else
{
while(q->next!=NULL)
q=q->next;
r=new dnode;
r->data=num;
r->next=NULL;
r->prev=q;
q->next=r;
}
}
void linklist::addatbeg(int num)
{
dnode * q;
q=new dnode;
q->prev=NULL;
q->data=num;
q->next=p;
q->prev=q;
p=q;
}
void linklist::addafter(int loc,int num)
{
dnode * q;
q=p;
for(int i=0;i<loc;i++)// SEARCH THE LOCATION WHERE THE NEW NODE TO BE INSERTED
{
q=q->next;
if(q==NULL)
{
cout<<"\n There are lessthan"<<loc<<"Elements";
return;
}
}
q=q->prev;
dnode * temp=new dnode;// ASSIGN THE NEW NODE
temp->data=num;
temp->prev=q;
temp->next=q->next;//CREATE THE LINK
temp->next->prev=temp;
q->next=temp;
}
void linklist::deleten(int num)
{
dnode * q=p;
while(q!=NULL)// FOUND THE DELETED NODE
{
if(q->data==num)
{
if(q==p)
{
p=p->next;
p->prev=NULL;
}
else
{
if(q->next==NULL)
q->prev->next=NULL;
else
{
q->prev->next=q->next;
q->next->prev=q->prev;
}
delete q;
}
return;
}
q=q->next;
}
cout<<num<<"not found";
}
void linklist::display()//DISPLAY THE LIST
{
dnode * temp=p;
cout<<endl;
while(temp!=NULL)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
linklist::~linklist()//
{
dnode * q;
while(q->next!=NULL)
{
q=p->next;
delete p;
p=q;
}
}
void main()
{
linklist l;
clrscr();
l.append(14);
l.append(22);
l.append(23);
l.append(43);
l.append(12);
cout<<"\n Elements in doubly linkledlist:";
l.display();
l.addatbeg(8);
l.addatbeg(13);
cout<<"\n Elements in doubly linkedlist after insertion at begining:";
l.display();
l.addafter(4,66);
l.addafter(2,96);
cout<<"\n Elements in doubly linkedlist after inserting particular location:";
l.display();
l.deleten(8);
l.deleten(13);
l.deleten(66);
cout<<"\n After deleting some Elements:";
l.display();
getch();
}
/* OUTPUT:
Elements in doubly linkedlist:14 22 23 43 12
Elements in doubly linkdelist after insertion at begining:8 13 14 22 23 43 12
Elements in doubly linkedlist after inserting particular location:8 13 96 14 66 22 23 43 12
After deleting some Elements: 96 14 22 23 43
*/
#include<iostream.h>
#include<conio.h>
class linklist
{
private:
struct dnode
{
dnode * prev;
int data;
dnode * next;
}*p;
public:
linklist();
void append(int num);
void addatbeg(int num);
void addafter(int loc,int num);
void deleten(int num);
void display();
~linklist();
};
linklist::linklist()
{
p=NULL;
}
void linklist::append(int num)// CREATE A NODE
{
dnode * q,*r;
q=p;
if(q==NULL)// IF CREATE NODE IS FIRST NODE THEN IF BODY WILL EXECUTE,OTHERWISE ELSE BODY EXECUTE
{
q=new dnode;
q->prev=NULL;
q->data=num;
q->next=NULL;
p=q;
}
else
{
while(q->next!=NULL)
q=q->next;
r=new dnode;
r->data=num;
r->next=NULL;
r->prev=q;
q->next=r;
}
}
void linklist::addatbeg(int num)
{
dnode * q;
q=new dnode;
q->prev=NULL;
q->data=num;
q->next=p;
q->prev=q;
p=q;
}
void linklist::addafter(int loc,int num)
{
dnode * q;
q=p;
for(int i=0;i<loc;i++)// SEARCH THE LOCATION WHERE THE NEW NODE TO BE INSERTED
{
q=q->next;
if(q==NULL)
{
cout<<"\n There are lessthan"<<loc<<"Elements";
return;
}
}
q=q->prev;
dnode * temp=new dnode;// ASSIGN THE NEW NODE
temp->data=num;
temp->prev=q;
temp->next=q->next;//CREATE THE LINK
temp->next->prev=temp;
q->next=temp;
}
void linklist::deleten(int num)
{
dnode * q=p;
while(q!=NULL)// FOUND THE DELETED NODE
{
if(q->data==num)
{
if(q==p)
{
p=p->next;
p->prev=NULL;
}
else
{
if(q->next==NULL)
q->prev->next=NULL;
else
{
q->prev->next=q->next;
q->next->prev=q->prev;
}
delete q;
}
return;
}
q=q->next;
}
cout<<num<<"not found";
}
void linklist::display()//DISPLAY THE LIST
{
dnode * temp=p;
cout<<endl;
while(temp!=NULL)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
linklist::~linklist()//
{
dnode * q;
while(q->next!=NULL)
{
q=p->next;
delete p;
p=q;
}
}
void main()
{
linklist l;
clrscr();
l.append(14);
l.append(22);
l.append(23);
l.append(43);
l.append(12);
cout<<"\n Elements in doubly linkledlist:";
l.display();
l.addatbeg(8);
l.addatbeg(13);
cout<<"\n Elements in doubly linkedlist after insertion at begining:";
l.display();
l.addafter(4,66);
l.addafter(2,96);
cout<<"\n Elements in doubly linkedlist after inserting particular location:";
l.display();
l.deleten(8);
l.deleten(13);
l.deleten(66);
cout<<"\n After deleting some Elements:";
l.display();
getch();
}
/* OUTPUT:
Elements in doubly linkedlist:14 22 23 43 12
Elements in doubly linkdelist after insertion at begining:8 13 14 22 23 43 12
Elements in doubly linkedlist after inserting particular location:8 13 96 14 66 22 23 43 12
After deleting some Elements: 96 14 22 23 43
*/
No comments:
Post a Comment
Note: only a member of this blog may post a comment.