求助,用C++解决这个问题!
模拟队列管理算法,通过键盘输入0~100之间的整数,当输入奇数时,奇数入列,当输入偶数时,执行出队操作,当输入-1时,结束程序,并输出队列中的所有数据元素。这个用C语言已经有人做出来了!地址为https://bbs.bccn.net/thread-201841-1-2.html (C语言)
#include<stdio.h>
#include<stdlib.h>
#define SIZE 100
typedef struct{ //队列数据结构
int data[SIZE];
int front,rear;
int count;
}QUEUE;
void initqueue(QUEUE**);//队列初始化
void enqueue(QUEUE*,int i);//入队
int dequeue(QUEUE*);//出队
bool queueempty(QUEUE*);//判队空
bool queuefull(QUEUE*);//判队满
int main(void)
{
int x,m;
QUEUE *n1;
initqueue(&n1);
scanf("%d",&x);
while(x!=-1){ //输入-1结束
m=x;
if(x%2){ //偶数时入队
enqueue(n1,m);
puts("enqueue ok");
}
else //奇数时出队
{
if((x=dequeue(n1))!=-2) //返回-2时表示队列已空,不执行输出
printf("dequeue:%d\n",x);
}
scanf("%d",&x);
}
}
void initqueue(QUEUE** Q)
{
*Q=(QUEUE*)malloc(sizeof(QUEUE));
(*Q)->count=0;
(*Q)->rear=0;
(*Q)->front=0;
}
bool queueempty(QUEUE *Q)
{
return Q->count==0;
}
bool queuefull(QUEUE *Q)
{
return Q->count==SIZE;
}
void enqueue(QUEUE *Q,int i)
{
if(queuefull(Q)){
printf("queue overflow!");
return;
}
Q->count++;
Q->data[Q->rear]=i;
Q->rear=(Q->rear+1)%SIZE;
}
int dequeue(QUEUE *Q)
{
if(queueempty(Q)){
printf("queue empty!\n");
return -2;
}
int temp=Q->data[Q->front];
Q->count--;
Q->front=(Q->front+1)%SIZE;
return temp;
}
不知道用C++怎么实现,望高手解答!
在线等待!!!