#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int head, tail;
void enqueue(int value);
int dequeue(void);
int main(void)
{
head = tail = 0;
int resp, data, i;
while(1){
printf("1:enqueue 2:dequeue 0:end > ");
if(resp == 0) break;
switch (resp){
case 1:
printf("enqueue(1): 'value' > "); enqueue(data);
break;
case 2:
dequeue();
break;
}
printf("head:%d, tail:%d\n", head
, tail
); // headとtailの現在位置を表示
if (head != tail) {
i = head;
while(i != tail){
printf("queue[%d]=%d, ", i
, queue
[i
]); i = (i + 1) % SIZE;
}
}
}
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 0; // またはエラー値
} else {
value = queue[head];
head = (head + 1) % SIZE;
return value;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQppbnQgcXVldWVbU0laRV07CmludCBoZWFkLCB0YWlsOwoKdm9pZCBlbnF1ZXVlKGludCB2YWx1ZSk7CmludCBkZXF1ZXVlKHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogICAgaGVhZCA9IHRhaWwgPSAwOwogICAgaW50IHJlc3AsIGRhdGEsIGk7CgogICAgd2hpbGUoMSl7CiAgICAgICAgcHJpbnRmKCIxOmVucXVldWUgMjpkZXF1ZXVlIDA6ZW5kID4gIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJnJlc3ApOwoKICAgICAgICBpZihyZXNwID09IDApIGJyZWFrOwoKICAgICAgICBzd2l0Y2ggKHJlc3ApewogICAgICAgICAgICBjYXNlIDE6IAogICAgICAgICAgICAgICAgcHJpbnRmKCJlbnF1ZXVlKDEpOiAndmFsdWUnID4gIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCAmZGF0YSk7CiAgICAgICAgICAgICAgICBlbnF1ZXVlKGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjogCiAgICAgICAgICAgICAgICBkZXF1ZXVlKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHByaW50ZigiaGVhZDolZCwgdGFpbDolZFxuIiwgaGVhZCwgdGFpbCk7IC8vIGhlYWTjgah0YWls44Gu54++5Zyo5L2N572u44KS6KGo56S6CgogICAgICAgIHByaW50ZigicXVldWU6Iik7CiAgICAgICAgaWYgKGhlYWQgIT0gdGFpbCkgewogICAgICAgICAgICBpID0gaGVhZDsKICAgICAgICAgICAgd2hpbGUoaSAhPSB0YWlsKXsKICAgICAgICAgICAgICAgIHByaW50ZigicXVldWVbJWRdPSVkLCAiLCBpLCBxdWV1ZVtpXSk7CiAgICAgICAgICAgICAgICBpID0gKGkgKyAxKSAlIFNJWkU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9Cgp2b2lkIGVucXVldWUoaW50IHZhbHVlKQp7CiAgICBpZiAoaGVhZCA9PSAodGFpbCsxKSVTSVpFKSB7CiAgICAgICAgcHJpbnRmKCLjgq3jg6Xjg7zjga/muoDmna/jgaflhaXjgorjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBxdWV1ZVt0YWlsXSA9IHZhbHVlOwogICAgICAgIHRhaWwgPSAodGFpbCArIDEpICUgU0laRTsKICAgIH0KfQoKaW50IGRlcXVldWUodm9pZCkKewogICAgaW50IHZhbHVlOwogICAgaWYgKGhlYWQgPT0gdGFpbCkgewogICAgICAgIHByaW50Zigi44Kt44Ol44O844Gv56m644Gn5Y+W44KK5Ye644Gb44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgICAgICByZXR1cm4gMDsgLy8g44G+44Gf44Gv44Ko44Op44O85YCkCiAgICB9IGVsc2UgewogICAgICAgIHZhbHVlID0gcXVldWVbaGVhZF07CiAgICAgICAgaGVhZCA9IChoZWFkICsgMSkgJSBTSVpFOwogICAgICAgIHJldHVybiB2YWx1ZTsKICAgIH0KfQ==