#include <stdio.h>

#define MAX 100

int queue[MAX];
int front = 0;
int rear = 0;

/* enQueue関数 */
int enQueue(int data) {
    printf("enQueue開始時: front = %d, rear = %d\n", front, rear);

    if (rear >= MAX) {
        return -1;   // 満杯
    }

    queue[rear] = data;
    rear++;

    return 0;
}

/* deQueue関数 */
int deQueue(int *data) {
    printf("deQueue開始時: front = %d, rear = %d\n", front, rear);

    if (front == rear) {
        return -1;   // 空
    }

    *data = queue[front];
    front++;

    return 0;
}

/* キューの内容を表示する関数 */
void printQueue() {
    int i;

    printf("Queue = [ ");
    for (i = front; i < rear; i++) {
        printf("%d ", queue[i]);
    }
    printf("]\n");
}

/* main関数 */
int main() {
    int x;

    enQueue(10);
    enQueue(20);
    enQueue(30);

    printQueue();

    deQueue(&x);
    printf("取り出した値 = %d\n", x);

    printQueue();

    return 0;
}