#include <iostream>
#include<cstdio>
using namespace std;
typedef struct LinkNode {//队列链式结构
int Data;
struct LinkNode* next;
}LinkNode;
typedef struct {
LinkNode* front;
LinkNode* rear;
}LinkQueue;
typedef struct Link {//队列线性结构
int Data[100];
int front;
int rear;
}Link;
bool InitQueue(LinkQueue& Q)//队列初始化
{
Q.front = Q.rear = new LinkNode;
if (Q.front == NULL) return false;
Q.front->next = NULL;
return true;
}
bool EnQueue(LinkQueue& Q, int& data)//入队操作
{
LinkNode* s = new LinkNode;
if (s == NULL) return false;
s->Data = data;
s->next = NULL;
Q.rear->next = s;
Q.rear = s;
return true;
}
bool DeQueue(LinkQueue& Q, int& data)//出队操作;
{
if (Q.front == Q.rear) return false;
LinkNode* p = Q.front->next;
data = p->Data;
Q.front->next = p->next;
if (Q.rear == p) Q.rear = Q.front;
delete[] p;
return true;
}
bool EmptyQueue(LinkQueue Q)
{
if (Q.front == Q.rear) return true;
return false;
}
int main()
{
LinkQueue Q;
InitQueue(Q);
int data;
cin >> data;
while (data != 000)
{
EnQueue(Q, data);
cin >> data;
}
while (!EmptyQueue(Q))
{
DeQueue(Q, data);
cout << data << endl;
}
return true;
}