#include <stdio.h>
#include <malloc.h>
typedef int QElemType;
typedef int Status;
#define Ok 1
#define Error 0
#define True 1
#define False 0
#define MAXQSIZE 100
typedef struct
{
QElemType front;
QElemType rear;
int base[MAXQSIZE];
}SqQueue;
Status InitQueue(SqQueue &Q) //初始化队列
{
Q.front=Q.rear=0;
return Ok;
}
int QueueLength(SqQueue Q) //队列的长度
{
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status QueueEmpty(SqQueue &Q) //判断队列是否为空
{
if(Q.front==Q.rear)
return True;
else return False;
}
Status DeQueue(SqQueue &Q,QElemType &e) //出队
{
if(QueueEmpty(Q))
return Error;
Q.front=(Q.front+1)%MAXQSIZE;
return Ok;
}
Status EnQueue(SqQueue &Q,QElemType e) //入队
{
if((Q.rear+1)%MAXQSIZE==Q.front)
return Error;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return Ok;
}
QElemType GetHead(SqQueue Q) //返回队头元素
{
if(Q.front!=Q.rear)
return Q.base[Q.front];
return Ok;
}
Status QueueTraverse(SqQueue Q) //遍历队列
{
QElemType b = Q.front;
while(b!=Q.rear)
{
printf("%d",Q.base[b]);
b=(b+1)%MAXQSIZE;
}
printf("\n");
return Ok;
}
int main()
{
SqQueue Q;
QElemType e;
printf("构造一个空队列......\n");
InitQueue(Q);
int n;
printf("请输入入队的个数:");
scanf("%d", &n);
printf("请输入入队元素:");
while(n--)
{
int m;
scanf("%d", &m);
EnQueue(Q,m);
}
printf("……本队列是为空吗??……\n");
if (QueueEmpty(Q) )
printf("YES !!!\n");
else
printf("NO !!!\n");
printf("……输出队头元素……\n");
e=GetHead(Q);
printf("队头元素是:\n");
printf("%d\n",e);
printf("……队尾插入元素……\n");
printf("请输入要插入的元素的数值:\n");
scanf("%d",&e);
EnQueue(Q,e);
printf("现在队中的元素是:\n");
QueueTraverse(Q);
printf("\n");
printf("……队头删除元素……\n");
printf("删除的元素是:\n");
scanf("%d",&e);
DeQueue(Q, e);
printf("现在队中的元素是:\n");
QueueTraverse(Q);
printf("\n");
printf("您已经成功完成所有的功能!!!\n");
return 0;
}