#include <stdio.h>
#define QUEUE_SIZE 5
int queue[QUEUE_SIZE];
int front = 0;  /* 先頭ポインタ */
int rear = 0;   /* 末尾ポインタ */

int enQueue(int x){
    printf("enQueue() front = %d rear = %d\n", front, rear);
    if( ((rear+1) % QUEUE_SIZE) == front ){
        return -1;
    }
    queue[rear] = x;
    rear = (rear + 1) % QUEUE_SIZE;
    return 1;
}

int deQueue(){
    printf("deQueue() front = %d rear = %d\n", front, rear);
    if( front == rear ){
        printf("deQueue() queue empty\n");
        return -1;
    }

    int x = queue[front];
    front = (front + 1) % QUEUE_SIZE;
    printf("deQueue: %d\n", x);
    return x;
}

void printQueue(void){
    printf("printQueue: ");

    int i = front;
    while(i != rear){
        printf("%d ", queue[i]);
        i = (i + 1) % QUEUE_SIZE;
    }
    printf("\n");
}

int main() {
    
    enQueue(1);
    enQueue(2);
    enQueue(3);
    printQueue();
    deQueue();
    deQueue();
    deQueue();
    printf("deQueue: %d\n", deQueue());

    return 0;
}