Vous êtes sur la page 1sur 16

Two Basic Operations in Queue

Enque : Inserting new element from rear end

Deque : Removing existing element from


front end
0 1 2 3 4 5 6

Rear End
Front End
#include <iostream>
using namespace std;
class Queue
{
int* array,size,f,r,count;
public:
Queue();
void Enque(int value);
int Deque();
bool is_Empty();
bool is_Full();
};
Queue::Queue()
{
cout<<"Enter size : ";
cin>>size;
array=new int[size];
f=r=-1;
count=0;
}
void Queue::Enque(int value)
{
if(!is_Full())
{
array[++r]=value;
count++;
}
else
{
cout<<"\n\nOverFlow ! \n\n";
}
}
int Queue::Deque()
{
if(!is_Empty())
{
count--;
return array[++f];
}
else
{
cout<<"\n\nUnderFlow ! \n\n";
}
}
bool Queue::is_Empty()
{
return f==r==-1;
}
bool Queue::is_Full()
{
return count==size;
}
void main()
{ 0 1 2 3 4 5 6
Queue obj; 1 2 3
obj.Enque(1);
obj.Enque(2);
obj.Enque(3);
obj.Deque();

}
#include <iostream>
using namespace std;
class Node
{
int value;
Node*next;
friend class Queue;
public:
Node()
{
next=NULL;
}
};
class Queue
first
{
Node *first,*last;
public:
Queue() last
{
first=last=NULL;
}
void Enque(int v);
bool is_Empty();
void Deque();
void Display();
};
void Queue::Enque(int v)
{
Node *n=new Node(); DATA
n->value=v;
if(first==NULL) NEXT
{
last=first=n;
}
else
{
last->next=n;
last=n;
}
}
void Queue::Deque()
{
if(!is_Empty())
{
Node *temp=first;
first=first->next;
cout<<"\n\nThe data Dequeued is :
"<<temp->value<<endl;
delete temp;
}
}
bool Queue::is_Empty()
{
return first==NULL||last==NULL;
}
void Queue::Display()
{
Node *p = new Node;
p = first;
cout<<"\n\nQueue Elements are : \n\n";
while(p!=NULL)
{
cout<<p->value<<endl;
p = p->next;
}

}
100
200 12
100
first 200

Void main()
{
Queue Q; 15
Q.Enque(12); 200
Q.Enque(15); NULL

Q. Deque();
Q .Display();

} 200 last

Vous aimerez peut-être aussi