#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int head, tail;
void enqueue(int value);
int dequeue(void);
int main(void) {
int i;
head = tail = 0;
enqueue(1);
enqueue(2);
dequeue();
enqueue(3);
dequeue();
enqueue(4);
enqueue(5);
dequeue();
enqueue(6);
for(i = 0; i < SIZE; i++){
printf("queue[%d] = %d\n", i
, queue
[i
]); }
return 0;
}
void enqueue(int value){
if(head == (tail + 1) % SIZE){
}
else{
queue[tail] = value;
tail = (tail + 1) % SIZE;
}
}
int dequeue(void){
int value;
if(head == tail){
return -1;
}
else{
value = queue[head]; // ① 先に取り出す
queue[head] = 0; // ② 表示用に消す
head = (head + 1) % SIZE; // ③ head を進める
return value;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQoKaW50IHF1ZXVlW1NJWkVdOwppbnQgaGVhZCwgdGFpbDsKCnZvaWQgZW5xdWV1ZShpbnQgdmFsdWUpOwppbnQgZGVxdWV1ZSh2b2lkKTsKCmludCBtYWluKHZvaWQpIHsKICAgIGludCBpOwoKICAgIGhlYWQgPSB0YWlsID0gMDsKCiAgICBlbnF1ZXVlKDEpOwogICAgZW5xdWV1ZSgyKTsKICAgIGRlcXVldWUoKTsKICAgIGVucXVldWUoMyk7CiAgICBkZXF1ZXVlKCk7CiAgICBlbnF1ZXVlKDQpOwogICAgZW5xdWV1ZSg1KTsKICAgIGRlcXVldWUoKTsKICAgIGVucXVldWUoNik7CgogICAgZm9yKGkgPSAwOyBpIDwgU0laRTsgaSsrKXsKICAgICAgICBwcmludGYoInF1ZXVlWyVkXSA9ICVkXG4iLCBpLCBxdWV1ZVtpXSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnZvaWQgZW5xdWV1ZShpbnQgdmFsdWUpewogICAgaWYoaGVhZCA9PSAodGFpbCArIDEpICUgU0laRSl7CiAgICAgICAgcHJpbnRmKCLmuoDmna/jga7nirbmhYvjgafjgZnjgIJcbiIpOwogICAgfQogICAgZWxzZXsKICAgICAgICBxdWV1ZVt0YWlsXSA9IHZhbHVlOwogICAgICAgIHRhaWwgPSAodGFpbCArIDEpICUgU0laRTsKICAgIH0KfQoKaW50IGRlcXVldWUodm9pZCl7CiAgICBpbnQgdmFsdWU7CgogICAgaWYoaGVhZCA9PSB0YWlsKXsKICAgICAgICBwcmludGYoIuOCreODpeODvOOBr+epuuOBp+OBmeOAglxuIik7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgZWxzZXsKICAgICAgICB2YWx1ZSA9IHF1ZXVlW2hlYWRdOyAgIC8vIOKRoCDlhYjjgavlj5bjgorlh7rjgZkKICAgICAgICBxdWV1ZVtoZWFkXSA9IDA7ICAgICAgIC8vIOKRoSDooajnpLrnlKjjgavmtojjgZkKICAgICAgICBoZWFkID0gKGhlYWQgKyAxKSAlIFNJWkU7IC8vIOKRoiBoZWFkIOOCkumAsuOCgeOCiwogICAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KfQoK