#include<stdio.h>
#include<stdlib.h>
typedef struct queue
{
int *pbase;
int front;
int rear;
}Q;
void creat_queue(Q *pq) //初始化
{
pq->pbase = (int *)malloc(sizeof(int) * 10);
pq->front = 0;
pq->rear = 0;
}
bool full_queue(Q *pq) //判断队列是否满
{
if((pq->rear+1)%10 == pq->front)
return true;
else
return false;
}
bool is_empty(Q *pq) //判断队列是否空
{
if(pq->front == pq->rear)
return true;
else
return false;
}
bool input_queue(Q *pq,int val) //入队
{
if(full_queue(pq))
return false;
else
{
pq->pbase[pq->rear] = val;
pq->rear = (pq->rear+1)%10;
return true;
}
}
bool output_queue(Q *pq,int *pval) //出队
{
if(is_empty(pq))
return false;
else
{
*pval = pq->pbase[pq->front];
pq->front = (pq->front+1)%10;
return true;
}
}
void traverse(Q *pq) //遍历
{
int i=pq->front;
while(i!=pq->rear)
{
printf("%d ",pq->pbase[i]);
i=(i+1)%10;
}
return ;
}
int main()
{
int val;
Q pq;
creat_queue(&pq);
input_queue(&pq,11);
input_queue(&pq,33);
input_queue(&pq,99);
input_queue(&pq,55);
traverse(&pq);
if(output_queue(&pq,&val))
printf("出队成功,出队元素为:%d\n",val);
else
printf("出队失败!\n");
traverse(&pq);
return 0;
}