#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;
return x;
}
void printQueue(void){
int i = front;
while(i != rear){
i = (i + 1) % QUEUE_SIZE;
}
}
int main() {
enQueue(1);
enQueue(2);
enQueue(3);
printQueue();
deQueue();
deQueue();
deQueue();
printf("deQueue: %d\n", deQueue
());
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgUVVFVUVfU0laRSA1CmludCBxdWV1ZVtRVUVVRV9TSVpFXTsKaW50IGZyb250ID0gMDsgIC8qIOWFiOmgreODneOCpOODs+OCvyAqLwppbnQgcmVhciA9IDA7ICAgLyog5pyr5bC+44Od44Kk44Oz44K/ICovCgppbnQgZW5RdWV1ZShpbnQgeCl7CiAgICBwcmludGYoImVuUXVldWUoKSBmcm9udCA9ICVkIHJlYXIgPSAlZFxuIiwgZnJvbnQsIHJlYXIpOwogICAgaWYoICgocmVhcisxKSAlIFFVRVVFX1NJWkUpID09IGZyb250ICl7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgcXVldWVbcmVhcl0gPSB4OwogICAgcmVhciA9IChyZWFyICsgMSkgJSBRVUVVRV9TSVpFOwogICAgcmV0dXJuIDE7Cn0KCmludCBkZVF1ZXVlKCl7CiAgICBwcmludGYoImRlUXVldWUoKSBmcm9udCA9ICVkIHJlYXIgPSAlZFxuIiwgZnJvbnQsIHJlYXIpOwogICAgaWYoIGZyb250ID09IHJlYXIgKXsKICAgICAgICBwcmludGYoImRlUXVldWUoKSBxdWV1ZSBlbXB0eVxuIik7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQoKICAgIGludCB4ID0gcXVldWVbZnJvbnRdOwogICAgZnJvbnQgPSAoZnJvbnQgKyAxKSAlIFFVRVVFX1NJWkU7CiAgICBwcmludGYoImRlUXVldWU6ICVkXG4iLCB4KTsKICAgIHJldHVybiB4Owp9Cgp2b2lkIHByaW50UXVldWUodm9pZCl7CiAgICBwcmludGYoInByaW50UXVldWU6ICIpOwoKICAgIGludCBpID0gZnJvbnQ7CiAgICB3aGlsZShpICE9IHJlYXIpewogICAgICAgIHByaW50ZigiJWQgIiwgcXVldWVbaV0pOwogICAgICAgIGkgPSAoaSArIDEpICUgUVVFVUVfU0laRTsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICAKICAgIGVuUXVldWUoMSk7CiAgICBlblF1ZXVlKDIpOwogICAgZW5RdWV1ZSgzKTsKICAgIHByaW50UXVldWUoKTsKICAgIGRlUXVldWUoKTsKICAgIGRlUXVldWUoKTsKICAgIGRlUXVldWUoKTsKICAgIHByaW50ZigiZGVRdWV1ZTogJWRcbiIsIGRlUXVldWUoKSk7CgogICAgcmV0dXJuIDA7Cn0=