#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define MAXSIZE 11
typedef int Status;
typedef struct
{
int *base;
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue *q)
{
q->base=(int *)malloc((MAXSIZE+1) *sizeof(int));
if(!q->base)
exit(1);
q->front=q->rear=0;
return OK;
}
Status Push(SqQueue *q,int e)
{
if(((q->rear+1)%MAXSIZE)==q->front)
return ERROR;
q->base[q->rear]=e;
q->rear=(q->rear+1)%MAXSIZE;
return OK;
}
Status Pop(SqQueue *q,int *e)
{
if(q->front==q->rear)
return ERROR;
*e=q->base[q->front];
q->front=(q->front+1)%MAXSIZE;
return OK;
}
void main()
{
int a,i,b,c,d,e,f=0,g;
SqQueue q;
InitQueue(&q);
printf("队列只有10个位置\n");
printf("1,入队\n2,出队\n0,退出\n");
while(1)
{
printf("请选择:");
scanf("%d",&g);
switch(g)
{
case 1:
printf("输入入队元素个数:");
scanf("%d",&d);
printf("输入元素:\n");
for(i=0;i<d;i++)
{
scanf("%d",&b);
if(!Push(&q,b))
{
printf("队已满\n");
exit(0);
}
f++;
}
printf("队列内有%d个元素\n",f);
break;
case 2:
printf("输入出队元素的个数:");
scanf("%d",&e);
for(i=0;i<e;i++)
{
if(!Pop(&q,&c))
{
printf("对已空 ");
break;
}
printf("%d ",c);
f--;
}
printf("\n");
printf("队列内有%d个元素\n",f);
break;
case 0:
exit(0);
}
}
}