#include<iostream>
#include <cstring>
using namespace std;
const int MAXN = 10000;
typedef struct queue{
int data[MAXN];
int l,r;
}Queue;
Queue* initQueue(){
Queue *q = (Queue*)malloc(sizeof(Queue));
memset(q->data, 0, sizeof q->data);
q->l = q->r = 0;
return q;
}
//元素入队
bool enQueue(Queue *q, int v){
if((q->r + 1) % MAXN == q->l) return false;
q->data[q->r] = v;
q->r = (q->r + 1) % MAXN;
return true;
}
//元素出队
bool deQueue(Queue*q, int &e){
if(q->l == q->r) return false;
e = q->data[q->l];
q->l = (q->l + 1) % MAXN;
return true;
}
int main(){
auto q = initQueue();
for(int i = 0; i < 100; i++) enQueue(q, i);
int val;
for(int i = 0; i < 50; i++){
deQueue(q, val);
cout << val << endl;
}
return 0;
}