#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;
while(1){
printf("1:enqueue 2:dequeue 0:end:"); if(!resp) break;
switch(resp){
enqueue(data);
break;
case 2: dequeue();
break;
}
printf("head=%d,tail=%d\n",head
,tail
); }
int i;
i=head;
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+CiNkZWZpbmUgU0laRSA1CmludCBxdWV1ZVtTSVpFXTsKaW50IGhlYWQsdGFpbDsKCnZvaWQgZW5xdWV1ZShpbnQgdmFsdWUpOwppbnQgZGVxdWV1ZSh2b2lkKTsKaW50IG1haW4odm9pZCkgewoJaGVhZD10YWlsPTA7CglpbnQgcmVzcCwgZGF0YTsKCXdoaWxlKDEpewoJCXByaW50ZigiMTplbnF1ZXVlIDI6ZGVxdWV1ZSAwOmVuZDoiKTsKCQlzY2FuZigiJWQiLCZyZXNwKTsKCQlpZighcmVzcCkgYnJlYWs7CgkJc3dpdGNoKHJlc3ApewoJCQljYXNlIDE6IHByaW50ZigiZW5xdWV1ZToiKTsgc2NhbmYoIiVkIiwmZGF0YSk7CgkJCSBlbnF1ZXVlKGRhdGEpOwoJCQlicmVhazsKCQkJY2FzZSAyOiBkZXF1ZXVlKCk7CgkJCWJyZWFrOwoJCX0KCQlwcmludGYoImhlYWQ9JWQsdGFpbD0lZFxuIixoZWFkLHRhaWwpOwoJfQoJcHJpbnRmKCJcbiIpOwoJaW50IGk7CglpPWhlYWQ7Cgl3aGlsZShpIT10YWlsKXsKCQlwcmludGYoInF1ZXVlWyVkXT0lZFxuIixpLHF1ZXVlW2ldKTsKCQlpKys7CgkJaT1pJVNJWkU7Cgl9CglyZXR1cm4gMDsKfQp2b2lkIGVucXVldWUoaW50IHZhbHVlKQp7CglpZihoZWFkPT0odGFpbCsxKSVTSVpFKXsKCQlwcmludGYoIuOCreODpeODvOOBr+a6gOadr+OBp+WFpeOCiuOBvuOBm+OCk+OBp+OBl+OBn1xuIik7Cgl9ZWxzZXsKCQlxdWV1ZVt0YWlsKytdPXZhbHVlOwoJfQoJdGFpbD10YWlsJVNJWkU7Cn0KaW50IGRlcXVldWUodm9pZCkKewoJaW50IHZhbHVlOwoJaWYoaGVhZD09dGFpbCl7CgkJcHJpbnRmKCLjgq3jg6Xjg7zjga/nqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwoJCXJldHVybiAwOwoJfWVsc2V7CgkJdmFsdWU9cXVldWVbaGVhZCsrXTsKCX0KCWhlYWQ9aGVhZCVTSVpFOwoJcmV0dXJuIHZhbHVlOwp9