You are on page 1of 5

Exercise 1:

#include <iostream>

using namespace std;


class Node
{
public:
Node* next;
Node* prev;
int data;

};
class DoublyList
{
private:
Node* start;
public:
DoublyList();
// ~DoublyList();
bool emptyList();
void insert_after(int oldV,int newV);
void insert_begin(int value);
void insert_end(int value);
void delete_node(int value);
void traverse();
};
DoublyList::DoublyList()
{start=NULL;}
//DoublyList::~DoublyList()
//{}
bool DoublyList::emptyList()
{
if(start==NULL)
return true;
else
return false;

}
void DoublyList::insert_begin(int value)
{
Node *temp;
temp=new Node;
temp->prev=NULL;
temp->data=value;
if(start==NULL)
{
start=temp;
temp->next=NULL;
//
temp->prev=NULL;
return;
}
temp->next=start;
start->prev=temp;
start=temp;
}
void DoublyList::insert_end(int value)
{
Node*s,*temp;
temp=new Node;
temp->data=value;
temp->next=NULL;
if(start==NULL)
{
temp->prev=NULL;
start=temp;
}
else
{
s=start;
while(s->next!=NULL)
{
s=s->next;
}
s->next=temp;
temp->prev=s;
}
}
void DoublyList::insert_after(int oldV,int newV)
{
if(start==NULL)
{
cout<<"First Create the List."<<endl;
return;
}
Node *temp,*q;
q=start;
while(q->data!=oldV)
{
q=q->next;
if(q==NULL)
{
cout<<"value not found"<<endl;
return;
}
}
temp=new Node;
temp->data=newV;
if(q->next==NULL)
{
q->next=temp;
temp->next=NULL;
temp->prev=q;
}
else{
temp->next=q->next;
temp->prev=q;
temp->next->prev=temp;
q->next=temp;
}
}
void DoublyList::delete_node(int value)
{
Node *p, *q;
q =0; p = start;
while (p!=0 && p->data != value)
{ q = p;
p = p->next;
}
if (q == 0){
start=start->next;
start->prev = NULL;
delete p;
return; }
if(p->next==0) {
q->next=0;
delete p;
return;
}
if (p == 0) {
cout << "ERROR: Value sought not found.";
return;
}
q->next=p->next;
p->next->prev = q;
delete p; }
void DoublyList::traverse()
{
Node *temp;
temp=start;
while(temp!=NULL)
{
cout<<temp->data<<endl;
temp=temp->next;
}

int main()
{
DoublyList d;
d.insert_begin(30);
d.insert_begin(10);
d.insert_end(20);
d.insert_end(50);
d.insert_after(20,80);

d.traverse();
system("pause");

}
Exercise 3:
#include <iostream>

using namespace std;


class Node
{
public:
Node* next;
Node* prev;
int data;
};
class DoublyList
{
private:
Node* start;
public:
DoublyList();
bool emptyList();
void enqueue(int value);
void dequeue();
void traverse();
};
DoublyList::DoublyList()
{start=NULL;}

bool DoublyList::emptyList()
{
if(start==NULL)
return true;
else
return false;

void DoublyList::enqueue(int value)


{
Node*s,*temp;
temp=new Node;
temp->data=value;
temp->next=NULL;
if(start==NULL)
{
temp->prev=NULL;
start=temp;
}
else
{
s=start;
while(s->next!=NULL)
{
s=s->next;
}
s->next=temp;
temp->prev=s;
}
}
void DoublyList::dequeue()
{ Node *p;
p=start;
start=start->next;
start->prev = NULL;
delete p;

}
void DoublyList::traverse()
{
Node* temp;
temp=start;
while(temp!=NULL)
{cout<<temp->data<<endl;
temp=temp->next;
}

int main()
{
DoublyList d;
d.enqueue(10);
d.enqueue(20);
d.enqueue(30);
d.enqueue(40);
d.dequeue();
d.traverse();
system("pause");

}
Exercise 2:

You might also like