#include <stdio.h>
#define SIZE 5
int queue[SIZE];
int head, tail, count;
void enqueue(int value);
int dequeue(void);
int isFull(void);
int isEmpty(void);
void display(void);
void initialize(void);
int main(void)
{
initialize();
int resp, data;
while(1){
printf("1:enqueue 2:dequeue 3:initialize 0:end : "); scanf("%d", &resp
);
if(!resp) break;
switch(resp){
enqueue(data);
break;
case 2:dequeue();
break;
case 3:initialize();
break;
}
printf("head=%d, tail=%d\n", head
, tail
); }
display();
return 0;
}
void enqueue(int value)
{
if( isFull() ){
}else{
queue[tail++] = value;
tail = tail % SIZE;
}
}
int dequeue(void)
{
int value;
if( isEmpty() ){
return 0;
}else{
value = queue[head++];
head = head % SIZE;
return value;
}
}
int isFull(void)
{
if( head == (tail+1)%SIZE ){
return 1;
}else{
return 0;
}
}
int isEmpty(void)
{
if( head == tail ){
return 1;
}else{
return 0;
}
}
void display(void)
{
for(int i=0; i<count; i++){
printf("queue[%d]=%d\n",(head
+i
)%SIZE
, queue
[(head
+i
)%SIZE
]); }
}
void initialize(void)
{
head = tail = count = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQppbnQgcXVldWVbU0laRV07CmludCBoZWFkLCB0YWlsLCBjb3VudDsKCnZvaWQgZW5xdWV1ZShpbnQgdmFsdWUpOwppbnQgZGVxdWV1ZSh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgZGlzcGxheSh2b2lkKTsKdm9pZCBpbml0aWFsaXplKHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogICAgaW5pdGlhbGl6ZSgpOwogICAgaW50IHJlc3AsIGRhdGE7CgogICAgd2hpbGUoMSl7CiAgICAgICAgcHJpbnRmKCIxOmVucXVldWUgIDI6ZGVxdWV1ZSAgMzppbml0aWFsaXplICAwOmVuZCA6ICIpOyBzY2FuZigiJWQiLCAmcmVzcCk7CgogICAgICAgIGlmKCFyZXNwKSBicmVhazsKCiAgICAgICAgc3dpdGNoKHJlc3ApewogICAgICAgICAgICBjYXNlIDE6cHJpbnRmKCJlbnF1ZXVlIDogIik7IHNjYW5mKCIlZCIsICZkYXRhKTsKICAgICAgICAgICAgCQllbnF1ZXVlKGRhdGEpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6ZGVxdWV1ZSgpOwogICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzppbml0aWFsaXplKCk7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJoZWFkPSVkLCB0YWlsPSVkXG4iLCBoZWFkLCB0YWlsKTsKICAgIH0KICAgIAogICAgZGlzcGxheSgpOwoKICAgIHJldHVybiAwOwp9Cgp2b2lkIGVucXVldWUoaW50IHZhbHVlKQp7CiAgICBpZiggaXNGdWxsKCkgKXsKICAgICAgICBwcmludGYoIuOCreODpeODvOOBr+a6gOadr+OBp+WFpeOCiuOBvuOBm+OCk+OBp+OBl+OBn1xuIik7CiAgICB9ZWxzZXsKICAgICAgICBxdWV1ZVt0YWlsKytdID0gdmFsdWU7CiAgICAgICAgdGFpbCA9IHRhaWwgJSBTSVpFOwogICAgfQp9CgppbnQgZGVxdWV1ZSh2b2lkKQp7CiAgICBpbnQgdmFsdWU7CiAgICBpZiggaXNFbXB0eSgpICl7CiAgICAgICAgcHJpbnRmKCLjgq3jg6Xjg7zjga/nqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgICAgIHJldHVybiAwOwogICAgfWVsc2V7CiAgICAgICAgdmFsdWUgPSBxdWV1ZVtoZWFkKytdOwogICAgICAgIGhlYWQgPSBoZWFkICUgU0laRTsKICAgICAgICByZXR1cm4gdmFsdWU7CiAgICB9Cn0KCmludCBpc0Z1bGwodm9pZCkKewogICAgaWYoIGhlYWQgPT0gKHRhaWwrMSklU0laRSApewogICAgICAgIHJldHVybiAxOwogICAgfWVsc2V7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCmludCBpc0VtcHR5KHZvaWQpCnsKICAgIGlmKCBoZWFkID09IHRhaWwgKXsKICAgICAgICByZXR1cm4gMTsKICAgIH1lbHNlewogICAgICAgIHJldHVybiAwOwogICAgfQp9Cgp2b2lkIGRpc3BsYXkodm9pZCkKewogICAgcHJpbnRmKCJcbiIpOwogICBmb3IoaW50IGk9MDsgaTxjb3VudDsgaSsrKXsKICAgCSAgIHByaW50ZigicXVldWVbJWRdPSVkXG4iLChoZWFkK2kpJVNJWkUsIHF1ZXVlWyhoZWFkK2kpJVNJWkVdKTsKICAgfQp9Cgp2b2lkIGluaXRpYWxpemUodm9pZCkKewogICAgaGVhZCA9IHRhaWwgPSBjb3VudCA9ICAwOwp9