#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;
}
[[it] 本帖最后由 zz578 于 2008-3-4 10:51 编辑 [/it]]