#include <stdio.h>
#include <stdlib.h>
#define MAXQSIZE 100
struct sQueue
{
int* base;
int front; //类似于数组的元素。
int rear;
};
//创建新循环队列
void InitQueue(sQueue* Q)
{
Q->base = (int*)malloc(MAXQSIZE * sizeof(int));
//Q->base = new int[MAXQSIZE];
if (!Q->base)
{
printf("OVERFLOW\n");
}
Q->front = Q->rear = 0;
}
//返回队列个数。
int GetLength(sQueue* Q)
{
return (Q->rear - Q->front + MAXQSIZE) % MAXQSIZE;
}
//插入元素
bool EnQueue(sQueue* Q, int data)
{
if ((Q->rear + 1) % MAXQSIZE == Q->front)
{
printf("队列 满");
return false;
}
Q->base[Q->rear] = data;
Q->rear = (Q->rear + 1) % MAXQSIZE;
return true;
}
//删除
int* DeQueue(sQueue* Q, int* data)
{
if (Q->front == Q->rear)
{
printf("error!\n");
return;
}
*data = Q->base[Q->front];
Q->front = (Q->front + 1) % MAXQSIZE;
return data;
}