queue - count the number of elements
#include<iostream>
#define MS 100
using namespace std;
typedef struct FIFOQ{
int arr[MS];
int front,rear;
}Q;
void init(Q *ptq)
{
ptq->front=ptq->rear=-1;
}
int isempty(Q *ptq)
{
if(ptq->front==-1)
return 1;
else
return 0;
}
int isfull(Q *ptq)
{
if((ptq->front==0&&ptq->rear==MS-1)||(ptq->front==ptq->rear+1))
return 1;
else
return 0;
}
void enqueue(Q *ptq,int data)
{
if(isfull(ptq))
return;
else
{
if(ptq->front==-1)
ptq->front=0;
if(ptq->rear==MS-1)
ptq->rear=0;
else
{
++ptq->rear;
ptq->arr[ptq->rear]=data;
}
}
}
int count(Q *ptq)
{
if(isempty(ptq))
return 0;
else if(ptq->front==ptq->rear)
return 1;
else if(ptq->front<ptq->rear)
return (ptq->rear-ptq->front)+1;
else if(ptq->front>ptq->rear)
return (ptq->rear+ptq->front);
}
int dequeue(Q* ptq)
{
int temp;
if(isempty(ptq))
return 9999;
else
{
temp=ptq->arr[ptq->front];
if(ptq->front==ptq->rear)
ptq->front=ptq->rear=-1;
else if(ptq->front==MS-1)
ptq->front=0;
else
++ptq->front;
return temp;
}
}
int main()
{
Q q;
init(&q);
int i,n,arr[100],num;
//cout<<"Enter the no. of elements: ";
//cin>>n;
//cout<<"Enter the array elements: ";
enqueue(&q,5);
enqueue(&q,10);
enqueue(&q,15);
dequeue(&q);
enqueue(&q,20);
dequeue(&q);
/*for(i=0;i<n;i++)
{
cin>>arr[i];
enqueue(&q,arr[i]);
}
for(i=0;i<n;i++)
{
cout<<dequeue(&q)<<"\n";
}*/
num=count(&q);
cout<<"Number of elements: "<<num;
}
Comments
Post a Comment