#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct queue
{
long int front;
long int rear;
int* q;
int flag;
};
struct queue* create(long int capacity)
{
struct queue
* root
=(struct queue
*)malloc(sizeof(struct queue
)); capacity*=2;
root
->q
=(int *)malloc(capacity
* sizeof(int)); root->front=capacity;
root->rear=capacity;
root->flag=1;
return root;
}
void front(struct queue* root)
{
if(root->front==root->rear)
{
return;
}
if(root->flag==-1)
{
printf("%d\n",root
->q
[--root
->rear
]); return;
}
printf("%d\n",root
->q
[root
->front
++]); }
void back(struct queue* root)
{
if(root->rear==root->front)
{
return;
}
if(root->flag==-1)
{
printf("%d\n",root
->q
[root
->front
++]); return;
}
printf("%d\n",root
->q
[--root
->rear
]); }
void tofront(struct queue* root,int data)
{
if(root->flag==1)
{
root->q[--root->front]=data;
return;
}
root->q[root->rear++]=data;
}
void push(struct queue* root,int data)
{
if(root->flag==1)
{
root->q[root->rear++]=data;
return;
}
root->q[--root->front]=data;
}
void reverse(struct queue* root)
{
root->flag=-root->flag;
}
int main()
{
long int q;
struct queue* root=create(q);
long int i;
for(i=0;i<q;i++)
{
char c[10];
{
front(root);
}
{
back(root);
}
{
int data;
tofront(root,data);
}
{
int data;
push(root,data);
}
{
reverse(root);
}
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgogCnN0cnVjdCBxdWV1ZQp7CiAgbG9uZyBpbnQgZnJvbnQ7CiAgbG9uZyBpbnQgcmVhcjsKICBpbnQqIHE7CiAgaW50IGZsYWc7Cn07CnN0cnVjdCBxdWV1ZSogY3JlYXRlKGxvbmcgaW50IGNhcGFjaXR5KQp7CiAgICBzdHJ1Y3QgcXVldWUqIHJvb3Q9KHN0cnVjdCBxdWV1ZSAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHF1ZXVlKSk7CiAgICBjYXBhY2l0eSo9MjsKICAgIHJvb3QtPnE9KGludCAqKW1hbGxvYyhjYXBhY2l0eSAqIHNpemVvZihpbnQpKTsKICAgIHJvb3QtPmZyb250PWNhcGFjaXR5OwogICAgcm9vdC0+cmVhcj1jYXBhY2l0eTsKICAgIHJvb3QtPmZsYWc9MTsKcmV0dXJuIHJvb3Q7Cn0Kdm9pZCBmcm9udChzdHJ1Y3QgcXVldWUqIHJvb3QpCnsKICAgIGlmKHJvb3QtPmZyb250PT1yb290LT5yZWFyKQogICAgICB7CiAgICAgICAgICBwcmludGYoIk5vIGpvYiBmb3IgQWRhP1xuIik7CiAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYocm9vdC0+ZmxhZz09LTEpCiAgICAgIHsKICAgICAgICAgIHByaW50ZigiJWRcbiIscm9vdC0+cVstLXJvb3QtPnJlYXJdKTsKICAgICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBwcmludGYoIiVkXG4iLHJvb3QtPnFbcm9vdC0+ZnJvbnQrK10pOwp9CnZvaWQgYmFjayhzdHJ1Y3QgcXVldWUqIHJvb3QpCnsKICAgIGlmKHJvb3QtPnJlYXI9PXJvb3QtPmZyb250KQogICAgewogICAgICAgIHByaW50ZigiTm8gam9iIGZvciBBZGE/XG4iKTsKICAgICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmKHJvb3QtPmZsYWc9PS0xKQogICAgewogICAgICAgIHByaW50ZigiJWRcbiIscm9vdC0+cVtyb290LT5mcm9udCsrXSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgICAgIHByaW50ZigiJWRcbiIscm9vdC0+cVstLXJvb3QtPnJlYXJdKTsKfQp2b2lkIHRvZnJvbnQoc3RydWN0IHF1ZXVlKiByb290LGludCBkYXRhKQp7CiAgICBpZihyb290LT5mbGFnPT0xKQogICAgewogICAgICAgIHJvb3QtPnFbLS1yb290LT5mcm9udF09ZGF0YTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICByb290LT5xW3Jvb3QtPnJlYXIrK109ZGF0YTsKfQp2b2lkIHB1c2goc3RydWN0IHF1ZXVlKiByb290LGludCBkYXRhKQp7CiAgICBpZihyb290LT5mbGFnPT0xKQogICAgewogICAgICAgIHJvb3QtPnFbcm9vdC0+cmVhcisrXT1kYXRhOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHJvb3QtPnFbLS1yb290LT5mcm9udF09ZGF0YTsKfQp2b2lkIHJldmVyc2Uoc3RydWN0IHF1ZXVlKiByb290KQp7CiAgICByb290LT5mbGFnPS1yb290LT5mbGFnOwp9CmludCBtYWluKCkKewogICAgbG9uZyBpbnQgcTsKICAgIHNjYW5mKCIlbGQiLCZxKTsKICAgIHN0cnVjdCBxdWV1ZSogcm9vdD1jcmVhdGUocSk7CiAgICBsb25nIGludCBpOwogICAgZm9yKGk9MDtpPHE7aSsrKQogICAgewogICAgICAgIGNoYXIgY1sxMF07CiAgICAgICAgc2NhbmYoIiVzIixjKTsKICAgICAgICBpZihzdHJjbXAoYywiZnJvbnQiKT09MCkKICAgICAgICB7CiAgICAgICAgICAgIGZyb250KHJvb3QpOwogICAgICAgIH0KICAgICAgICBpZihzdHJjbXAoYywiYmFjayIpPT0wKQogICAgICAgIHsKICAgICAgICAgICAgYmFjayhyb290KTsKICAgICAgICB9CiAgICAgICAgaWYoc3RyY21wKGMsInRvRnJvbnQiKT09MCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBkYXRhOwogICAgICAgICAgICBzY2FuZigiJWQiLCZkYXRhKTsKICAgICAgICAgICAgdG9mcm9udChyb290LGRhdGEpOwogICAgICAgIH0KICAgICAgICBpZihzdHJjbXAoYywicHVzaF9iYWNrIik9PTApCiAgICAgICAgewogICAgICAgICAgICBpbnQgZGF0YTsKICAgICAgICAgICAgc2NhbmYoIiVkIiwmZGF0YSk7CiAgICAgICAgICAgIHB1c2gocm9vdCxkYXRhKTsKICAgICAgICB9CiAgICAgICAgaWYoc3RyY21wKGMsInJldmVyc2UiKT09MCkKICAgICAgICB7CiAgICAgICAgICAgIHJldmVyc2Uocm9vdCk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0gICA=