#include <stdio.h>
#include <stdlib.h>
#define MAXQSIZE 100   
#define OK 1
#define ERROR 0
#define FALSE 0
#define TRUE 1
typedef struct elem {
  int n;
}elem;
typedef struct {
  elem* base;  
  int front;  
  int rear;    
}SqQueue;
int InitQueue(SqQueue &Q) {
  Q.base =(elem*) malloc(sizeof(elem)*MAXQSIZE);
  if (Q.base == NULL) return ERROR;
  Q.front = 0;
  Q.rear = 0;
  return OK;
}
int LengthQueue(SqQueue &Q) {
  return Q.front <= Q.rear ? Q.rear - Q.front : MAXQSIZE - (Q.front - Q.rear);
}
int EmptyQueue(SqQueue &Q) {
  if (Q.front == Q.rear) return TRUE;
  return FALSE;
}
int AddQueue(SqQueue &Q, elem e) {
  if (Q.base == NULL || (Q.rear+1)%MAXQSIZE==Q.front) return ERROR;   
  *(Q.base + Q.front) = e;
  Q.rear = (Q.rear + 1) % MAXQSIZE;
  return OK;
}
int DeleteQueue(SqQueue &Q, elem* e) {
  if (Q.front == Q.rear || Q.base == NULL) return ERROR;
  *e = *(Q.base + Q.rear);
  Q.rear = (Q.rear + 1) % MAXQSIZE;
  return OK;
}
int GetHead(SqQueue &Q, elem* e) {
  if (Q.base == NULL || Q.front == Q.rear) return ERROR;
  *e = *(Q.base + Q.front);
  return OK;
}
int main()
{
  return 0;
}