#include<iostream>
using namespace std;
#define Max 50
#include<stdlib.h>
typedef char ElemType;
//类型定义
typedef struct
{
ElemType data[Max];
int front;
int count;
}QueueType;
//初始化队列
void InitQueue(QueueType *&q)
{
q = (QueueType *)malloc(sizeof(QueueType));
q->front =0;
q->count =0;
}
//判断队列是否为空
void EmptyQueue(QueueType *q)
{
if (q->count==0)
cout<< "队列为空!" << endl;
else
cout << "队列不为空!" << endl;
}
//元素进队
int enQueue(QueueType *&q, ElemType x)
{
int rear;
if (q->count ==Max) //队满溢出
return 0;
else
{
rear=(q->front+q->count)%Max;
rear=(rear+1)%Max;
q->data[rear]=x;
q->count++;
return 1;
}
}
//元素出队
int deQueue(QueueType *&q,ElemType &x)
{
if(q->count==0)
return 0;
else
{
q->front=(q->front+1)%Max;
x=q->data[q->front];
q->count--;
}
}
//输出队列的元素个数
void LenghtQueue(QueueType *q)
{
cout << q->count << endl;
}
//释放队列
void DestroyQueue(QueueType *q)
{
free(q);
}
//主函数测试
int main()
{
QueueType *q;
ElemType x;
cout<<"初始化队列!";
InitQueue(q);
cout<<endl;
cout<<"判断队列是否为空:";
EmptyQueue(q);
cout<<"a,b,c,d依次进队!";
enQueue(q,'a');
enQueue(q,'b');
enQueue(q,'c');
enQueue(q,'d');
cout<<endl;
cout<<"队列元素个数:";
LenghtQueue(q);
deQueue(q,x);
cout<<"元素 a 出队:"<<x;
cout<<endl;
cout<<"判断队列是否为空:";
EmptyQueue(q);
deQueue(q,x);
cout<<"输出出队序列:"<<x;
deQueue(q,x);
cout<<x;
deQueue(q,x);
cout<<x;
cout<<endl;
cout<<"队列元素个数:";
LenghtQueue(q);
cout<<"判断队列是否为空:";
EmptyQueue(q);
cout<<"销毁队列!";
DestroyQueue(q);
system("pause");
}