#include <iostream.h> class cqueue { private : int *arr ; int front, rear ; int MAX; public : cqueue( int maxsize = 10 ) ; void addq ( int item ) ; int delq( ) ; void display( ) ; } ; cqueue :: cqueue( int maxsize ) { MAX = maxsize ; arr = new int [ MAX ]; front = rear = -1 ; for ( int i = 0 ; i < MAX ; i++ ) arr[i] = 0 ; } void cqueue :: addq ( int item ) { if ( ( rear + 1 ) % MAX == front ) { cout << "\nQueue is full" ; return ; } rear = ( rear + 1 ) % MAX; arr[rear] = item ; if ( front == -1 ) front = 0 ; } int cqueue :: delq( ) { int data ; if ( front == -1 ) { cout << "\nQueue is empty" ; return NULL ; } data = arr[front] ; arr[front] = 0 ; if ( front == rear ) { front = -1 ; rear = -1 ; } else front = ( front + 1 ) % MAX; return data ; } void cqueue :: display( ) { cout << endl ; for ( int i = 0 ; i < MAX ; i++ ) cout << arr[i] << " " ; cout << endl ; } void main( ) { cqueue a ( 10 ) ; a.addq ( 14 ) ; a.addq ( 22 ) ; a.addq ( 13 ) ; a.addq ( -6 ) ; a.addq ( 25 ) ; cout << "\nElements in the circular queue: " ; a.display( ) ; int i = a.delq( ) ; cout << "Item deleted: " << i ; i = a.delq( ) ; cout << "\nItem deleted: " << i ; cout << "\nElements in the circular queue after deletion: " ; a.display( ) ; a.addq ( 21 ) ; a.addq ( 17 ) ; a.addq ( 18 ) ; a.addq ( 9 ) ; a.addq ( 20 ) ; cout << "Elements in the circular queue after addition: " ; a.display( ) ; a.addq ( 32 ) ; cout << "Elements in the circular queue after addition: " ; a.display( ) ; } |
ADB commands for Android
Android
What are C Tokens?
C/C++
Least Recently Used Paging Algorithm
Advanced programs
First In First Out Page Replacement Algorithm
Simple programs
Java Program to find the IP address of the Machine
Basic Programs
Palindrome checking using function overloading
Advanced programs
there is no ‘queue is full’ concept in circular buffer. you need to modify ur code to rollover the rear piinter.
@ Dummy….Not necessary pal…There are many ways to look at it..
If you ask me I will write 3 methods or one method with three modes
- Enqueue Soft – Just tries to add element, fails if the queue is full
- Enqueue Hard – Somehow adds the element by allocating extra memory
- Enqueue Forced – This is what you are talking about, It simply adds the element by dropping the first element(dequeued)
@ Author…Why don’t you templatize this program so that it can take any type of elements?
this code is wrong it doesn’t move the item inside it
bkwass mariiii hoi haiiiiiiiiiiiiiiiiii
/*
* C++ Program to Implement Circular Queue
*/
#include
#define MAX 5
using namespace std;
/*
* Class Circular Queue
*/
class Circular_Queue
{
private:
int *cqueue_arr;
int front, rear;
public:
Circular_Queue()
{
cqueue_arr = new int [MAX];
rear = front = -1;
}
/*
* Insert into Circular Queue
*/
void insert(int item)
{
if ((front == 0 && rear == MAX-1) || (front == rear+1))
{
cout<<"Queue Overflow \n";
return;
}
if (front == -1)
{
front = 0;
rear = 0;
}
else
{
if (rear == MAX – 1)
rear = 0;
else
rear = rear + 1;
}
cqueue_arr[rear] = item ;
}
/*
* Delete from Circular Queue
*/
void del()
{
if (front == -1)
{
cout<<"Queue Underflow\n";
return ;
}
cout<<"Element deleted from queue is : "<<cqueue_arr[front]<<endl;
if (front == rear)
{
front = -1;
rear = -1;
}
else
{
if (front == MAX – 1)
front = 0;
else
front = front + 1;
}
}
/*
* Display Circular Queue
*/
void display()
{
int front_pos = front, rear_pos = rear;
if (front == -1)
{
cout<<"Queue is empty\n";
return;
}
cout<<"Queue elements :\n";
if (front_pos <= rear_pos)
{
while (front_pos <= rear_pos)
{
cout<<cqueue_arr[front_pos]<<" ";
front_pos++;
}
}
else
{
while (front_pos <= MAX – 1)
{
cout<<cqueue_arr[front_pos]<<" ";
front_pos++;
}
front_pos = 0;
while (front_pos <= rear_pos)
{
cout<<cqueue_arr[front_pos]<<" ";
front_pos++;
}
}
cout<<endl;
}
};
/*
* Main
*/
int main()
{
int choice, item;
Circular_Queue cq;
do
{
cout<<"1.Insert\n";
cout<<"2.Delete\n";
cout<<"3.Display\n";
cout<<"4.Quit\n";
cout<>choice;
switch(choice)
{
case 1:
cout<>item;
cq.insert(item);
break;
case 2:
cq.del();
break;
case 3:
cq.display();
break;
case 4:
break;
default:
cout<<"Wrong choice\n";
}/*End of switch*/
}
while(choice != 4);
return 0;
}
I Hope , This Code will Help you!!!