#include<stdio.h>
#include<stdlib.h>
#define QUEEN_SIZE 50
typedef struct QNode{
int data[QUEEN_SIZE];
int front;
int rear;
}Queue;
//初始化队列
Queue *InitQueue()
{
Queue *q=(Queue*)malloc(sizeof(Queue));
if(q==NULL)
{
printf("InitQueue failde!\n");
exit(1);
}
q->front=0;
q->rear=0;
return q;
}
//判断队列是否满
int FullQueue(Queue *q)
{
return ((q->rear+1)%QUEEN_SIZE==q->front);
}
//判断队列是否为空
int EmptyQueue(Queue *q)
{
return (q->rear==q->front);
}
//入队列
void EnQueue(Queue *q,int data)
{
if(FullQueue(q))
return ;
q->data[++q->rear]=data;
q->rear=(q->rear+1)%QUEEN_SIZE;
}
//出队
int DeQueue(Queue *q)
{
if(EmptyQueue(q))
return 0;
int temp=q->data[++q->front];
q->front=(q->front+1)%QUEEN_SIZE;
return temp;
}
int main(int argc, const char *argv[])
{
Queue *q=(Queue*)malloc(sizeof(Queue));
q=InitQueue();
EnQueue(q,10);
EnQueue(q,20);
EnQueue(q,30);
EnQueue(q,40);
while(!EmptyQueue(q))
{
int data=DeQueue(q);
if(EmptyQueue(q))
printf("%d\n",data);
else
printf("%d->",data);
}
return 0;
}