#include<iostream>
#include<cstdio>
using namespace std;
#define MAXSIZE 100
typedef int Status;
typedef int Elem;
typedef struct QNode
{
	
	Elem data;
	struct QNode *next;
}QNode, *QueuePtr;
typedef struct
{
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;
Status InitQueue(LinkQueue &Q)
{
	Q.front = Q.rear = new QNode;
	Q.front->next = NULL; 
	return 1;
}
Status EnQueue_H(LinkQueue &Q, Elem e)
{
	QNode *p = new QNode;
	p->data = e;
	p->next = NULL;
	Q.rear->next = p;
	Q.rear = p;
	return 1;
}
Status DeQueue(LinkQueue &Q, Elem &e)
{
	if (Q.rear == Q.front) return 0;
	QNode *p = Q.front->next;
	e = p->data;
	Q.front->next = p->next; 
	if (Q.rear == p) Q.rear = Q.front; 
	delete p;
	return 1;
}
Elem GetHead(LinkQueue &Q)
{
	if (Q.front != Q.rear)
		return Q.front->next->data;
	return 0;
}
int main()
{
	LinkQueue Q;
	
	
	InitQueue(Q);
	
	EnQueue_H(Q, 1);
	cout << GetHead(Q);
	
	Elem e = 0;
	DeQueue(Q, e);
	cout << GetHead(Q);
	return 1;
}