数据结构循环队列(1)
首先我们介绍未知个数的循环队列
//李春葆数据结构第5版
#include<iostream>
#include<cstdlib>
#define MaxSize 50
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int front,rear;
}SqQueue;
//初始化队列
void InitQueue(SqQueue *&q)
{
q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
//销毁队列
void DestroyQueue(SqQueue *&q)
{
free(q);
}
//判空
bool QueueEmpty(SqQueue *q)
{
return q->front==q->rear;
}
//进队
bool enQueue(SqQueue *&q,ElemType e)
{
if((q->rear+1)%MaxSize==q->front)return false;
q->rear=(q->rear+1)%MaxSize;
q->data[q->rear]=e;
return true;
}
//出队
bool deQueue(SqQueue *&q,ElemType &e)
{
if((q->front+1)%MaxSize==q->front)return false;
q->front=(q->front+1)%MaxSize;
e=q->data[q->front];
return true;
}
int main()
{
SqQueue *qu;
ElemType e;
InitQueue(qu);
enQueue(qu,1);
enQueue(qu,2);
enQueue(qu,3);
deQueue(qu,e);
cout<<e<<endl;
DestroyQueue(qu);
return 0;
}