#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\n");
if(!resp) break;
switch(resp){
case 1:
enqueue(data);
break;
case 2:
dequeue();
break;
}
printf("haed=%d tail=%d\n",head
,tail
); }
while(i != tail){
printf("queue[%d]=%d\n",i
,queue
[i
]); i++;
i=i%SIZE;
}
return 0;
}
void enqueue(int value){
if(head == (tail+1) % SIZE){
}else{
queue[tail++] = value;
}
tail = tail % SIZE;
}
int dequeue(void){
int value;
if(head == tail){
return 0;
}else{
value = queue[head++];
head = head % SIZE;
return value;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgU0laRSA1CgppbnQgcXVldWVbU0laRV07CmludCBoZWFkLHRhaWw7Cgp2b2lkIGVucXVldWUoaW50IHZhbHVlKTsKaW50IGRlcXVldWUodm9pZCk7CgppbnQgbWFpbih2b2lkKSB7CgloZWFkPXRhaWw9MDsKCWludCByZXNwLGRhdGEsaTsKCQoJd2hpbGUoMSl7CgkJcHJpbnRmKCIxOmVucXVldWUgMjpkZXF1ZXVlIDA6ZW5kXG4iKTsKCQlzY2FuZigiJWQiLCZyZXNwKTsKIAoJCWlmKCFyZXNwKSBicmVhazsKIAoJCXN3aXRjaChyZXNwKXsKCQkJY2FzZSAxOgoJCQkJcHJpbnRmKCJlbnF1ZXVlOiIpOwoJCQkJc2NhbmYoIiVkIiwmZGF0YSk7CgkJCQllbnF1ZXVlKGRhdGEpOwoJCQkJYnJlYWs7CgkJCWNhc2UgMjoKCQkJCWRlcXVldWUoKTsKCQkJCWJyZWFrOwoJCX0KCQlwcmludGYoImhhZWQ9JWQgdGFpbD0lZFxuIixoZWFkLHRhaWwpOwoJfQoJcHJpbnRmKCJcbiIpOwoJd2hpbGUoaSAhPSB0YWlsKXsKCQlwcmludGYoInF1ZXVlWyVkXT0lZFxuIixpLHF1ZXVlW2ldKTsKCQlpKys7CgkJaT1pJVNJWkU7Cgl9CgkKCXJldHVybiAwOwp9Cgp2b2lkIGVucXVldWUoaW50IHZhbHVlKXsKCWlmKGhlYWQgPT0gKHRhaWwrMSkgJSBTSVpFKXsKCQlwcmludGYoIuOCreODpeODvOOBjOa6gOadr+OBp+WFpeOCiuOBvuOBm+OCk1xuIik7Cgl9ZWxzZXsKCQlxdWV1ZVt0YWlsKytdID0gdmFsdWU7Cgl9Cgl0YWlsID0gdGFpbCAlIFNJWkU7Cn0KIAppbnQgZGVxdWV1ZSh2b2lkKXsKCWludCB2YWx1ZTsKCWlmKGhlYWQgPT0gdGFpbCl7CgkJcHJpbnRmKCLjgq3jg6Xjg7zjga/nqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpNcbiIpOwoJCXJldHVybiAwOwoJfWVsc2V7CgkJdmFsdWUgPSBxdWV1ZVtoZWFkKytdOwoJCWhlYWQgPSBoZWFkICUgU0laRTsKCQlyZXR1cm4gdmFsdWU7Cgl9Cn0=