#include<iostream>
using namespace std;
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int front,rear;
}SeqQueue,*PSeqQueue;
//初始化队列
PSeqQueue Init_SeqQueue(void)
{
PSeqQueue Q;
Q=(PSeqQueue)malloc(sizeof(SeqQueue));
if(Q)
{
Q->front=0;
Q->rear=0;
}
return Q;
}
//判断队空(是否有元素)
int Empty_SeqQueue(PSeqQueue Q)
{
if(Q&&Q->front==Q->rear)
return 1;
else
return 0;
}
//入队
int Push_SeqQueue(PSeqQueue Q,int x)
{
if((Q->rear+1)%MAXSIZE==Q->front)//判断队满
{
cout<<"队满";
return -1;
}
else
{
Q->rear=(Q->rear+1)%MAXSIZE;//队列front指针指向的为空,rear指针指向最后一个元素,循环
Q->data[Q->rear]=x;
return 1;
}
}
//出队
int Pop_SeqQueue(PSeqQueue Q,int *x)
{
if(Empty_SeqQueue(Q))
{
cout<<"队空";
return -1;
}
else
{
Q->front=(Q->front+1)%MAXSIZE;
*x=Q->data[Q->front];
return 1;
}
}
//读队头元素
int GetTop_SeqQueue(PSeqQueue Q,int *x)
{
if(Q->front==Q->rear)
{
cout<<"队空";
return -1;
}
else
{
*x=Q->data[(Q->front+1)%MAXSIZE];
return 1;
}
}
//销毁队列
void Destroy_SeqQueue(PSeqQueue *Q)
{
if(*Q)
free(*Q);
*Q=NULL;
return ;
}
int main()
{
PSeqQueue Q;
Q=Init_SeqQueue();
Destroy_SeqQueue(&Q);
return 0;
}