Sunday, October 27, 2013

Doubly Circular Linked List in C++

#include <iostream>
using namespace std;

class node
{
node *next;
node *pre;
int data;
friend class list;
public:
node(int);
};
node::node(int x)
{
data=x;
next= NULL;
pre= NULL;
}
class list
{
node *start;
public:
list()
{ start=NULL; }
void create();
void insert_strt();
void display();
void insert_end();
void Delt_start();
void Delt_end();
void insert_after();
void insert_before();
void Delt_after();
};
void list:: create()
{
int data;
cout<<"Enter data to first node"<<endl;
cin>> data;
start= new node(data);
start -> next =start;
start -> pre =start;
cout<<"list created"<<endl;
}
void list::insert_strt()
{
int data;
node *temp;
cout<<"Enter data to be insert at start"<<endl;
cin>> data;
temp=new node(data);
temp ->next= start;
temp ->pre= start->pre;
start ->pre -> next= temp;
start ->pre=temp;
start = temp;
}
void list::insert_end()
{
int data;
node *temp;
cout<<"Enter data to be insert at end"<<endl;
cin>>data;
temp=new node(data);
temp -> pre = start -> pre;
temp -> next=start;
start ->pre -> next =temp;
start ->pre =temp;
}
void list::insert_after()
{
int data,data1;
node *temp,*p;
cout<<"Enter data after which you want to insert"<<endl;
cin>>data;
p=start;
do
{
if(p->data==data)
{
break;
}
else
p=p->next;

}while(p!=start);
cout<<"Enter new data"<<endl;
cin>>data1;
temp= new node(data1);
temp->pre=p;
temp->next=p->next;
p->next->pre=temp;
p->next=temp;
display();


}
void list::insert_before()
{
int data,data1;
node *temp,*p;
cout<<"Enter data before which you want to insert data"<<endl;
cin>>data;
p=start;
do
{
if(p->data==data)
{
break;
}
else
p=p->next;

}while(p!=start);
cout<<"Enter new data"<<endl;
cin>>data1;
temp= new node(data1);
temp->next=p;
temp->pre=p->pre;
p->pre->next=temp;
p->pre=temp;
display();

}
void list::Delt_start()
{
node *temp;
temp=start;
start=start -> next;
start->pre=temp -> pre;
temp ->pre->next =start;
temp -> pre =temp ->next =NULL;
delete (temp);
display();
}
void list::Delt_end()
{
node *temp;
temp=start->pre;
temp->pre->next=start;
start->pre=temp->pre;
temp->pre=temp->next=NULL;
delete (temp);
display();
}
void list::Delt_after()
{
int data;
node *p,*temp;
cout<<"Enter data after which you want to delete data"<<endl;
cin>>data;
p=start;
do
{
if(p->data==data)
break;
else
p=p->next;

}while(p!=start);
temp=p->next;
p->next->pre=temp->pre;
p->next=temp->next;
temp->pre=temp->next=NULL;
delete(temp);
display();
}
void list::display()
{
node *p;
p = start;
if(p->next ==start)
cout<<p->data<<"\t";
else
{
cout<<p->data <<"\t";
p=p->next;
while(p!=start)
{
cout<<p->data <<"\t";
p=p->next;
}
}
}
int main()
{
int x,i=0;
list l;
while(i<100)
{
cout<<"enter your choice:\n1-create\n2-insert at start\n3-insert at end\n4-delete at start\n5-delete at end\n6-insert after\n7-Insert before\n8-delete after\n9-display "<<endl;
cin>>x;
switch(x)
{
case 1:
l.create();
break;
case 2:
l.insert_strt();
break;
case 3:
l.insert_end();
break;
case 4:
l.Delt_start();
break;
case 5:
l.Delt_end();
break;
case 6:
l.insert_after();
break;
case 7:
l.insert_before();
break;
case 8:
l.Delt_after();
break;
case 9:
l.display();
break;
default:
return 0;
}

}

}


No comments:

Post a Comment

Perform a suitable assignment using Xen Hypervisor or equivalent open source to configure it. Give necessary GUI.

 To install kvm on Fedora:  yum install kvm  yum install virt-manager libvirt libvirt-python python-virtinst  su -c "yum install @v...