数据结构循环队列(2)
已知队列元素个数的循环队列构造方法
//李春葆数据结构第5版
#include<iostream>
#include<cstdlib>
#define MaxSize 50
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front; //队头指针
int count; //队列元素个数
}QuType;
//初始化队列
void InitQueue(QuType *&qu)
{
qu=(QuType *)malloc(sizeof(QuType));
qu->front=0;
qu->count=0;
}
//销毁队列
void DestroyQueue(QuType *&qu)
{
free(qu);
}
//判空
bool QueueEmpty(QuType *qu)
{
return qu->count==0;
}
//进队
bool EnQueue(QuType *&qu,ElemType e)
{
int rear;
if(qu->count==MaxSize)return false;
else
{
rear=(qu->front+qu->count)%MaxSize;//计算队尾指针;
rear=(rear+1)%MaxSize;
qu->data[rear]=e;
qu->count++;
return true;
}
}
//出队
bool DeQueue(QuType *&qu,ElemType &e)
{
if(qu->count==0)return false;
else
{
qu->front=(qu->front+1)%MaxSize;
e=qu->data[qu->front];
qu->count--;
return true;
}
}
int main()
{
QuType *qu;
ElemType e;
InitQueue(qu);
EnQueue(qu,1);
EnQueue(qu,2);
EnQueue(qu,3);
DeQueue(qu,e);
cout<<e<<endl;
DestroyQueue(qu);
return 0;
}