Wednesday, 3 September 2014

/* 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
           */

No comments:

Post a Comment

Note: only a member of this blog may post a comment.