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

Popular Posts