//定义队列存储结构
typedef struct
{
int *data;
int front;//队列头
int rear;//队列尾
int count;//队列元素的个数
int size;
}*pQueue,Queue;
//创建空的队列(队列里面只能存放size-1个元素,不是就会各第一个元素重合)
pQueue CreateQueue(int length)//循环队列的大小
{
//在内存中动态的分配空间给*p
Queue *p;
p=new Queue;
//动态的创建数组
p->data=new int [length];
p->size=length;
//空队列,头指针等于尾指针
p->front=p->rear=0;
//队列元素的个数
p->count=0;
return p;
}
//判断队列是否为空
bool Queue_isEmpty(Queue *q)
{
//当front等于rear或者count等于0时候
if(q->count==0)
{
return true;
}
else
{
return false;
}
}
//入队(判断队列是否是满的)
bool InsertQueue(Queue *q,int value)
{
if(q->count==q->size)
{
return true;
}
else
{
//1.将要插入数据赋值给队列尾
q->data[q->rear]=value;
//2.尾指针加一(rear+1/size)由于是循环队列
q->rear=(q->rear+1)%q->size;
//3.队列元素个数加一
q->count++;
return false;
}
}
//出队(判断队列是否为空)
bool DeleteQueue(Queue *q)
{
//队列是空
if(Queue_isEmpty(q))
return true;
else
{
//1.头指针加一,(front+1/size)由于是循环队列
q->front=q->front+1%q->size;
//2.队列元素个数减一
q->count--;
return false;
}
}
//遍历循环队列
bool TraversalQueue(Queue *q)
{
//队列是空
if(Queue_isEmpty(q))
return true;
else
{
int tail = q->front ;
while(tail != q->rear){
cout<<q->data[tail];
tail = (tail + 1)%q->size;
}
}
}
typedef struct
{
int *data;
int front;//队列头
int rear;//队列尾
int count;//队列元素的个数
int size;
}*pQueue,Queue;
//创建空的队列(队列里面只能存放size-1个元素,不是就会各第一个元素重合)
pQueue CreateQueue(int length)//循环队列的大小
{
//在内存中动态的分配空间给*p
Queue *p;
p=new Queue;
//动态的创建数组
p->data=new int [length];
p->size=length;
//空队列,头指针等于尾指针
p->front=p->rear=0;
//队列元素的个数
p->count=0;
return p;
}
//判断队列是否为空
bool Queue_isEmpty(Queue *q)
{
//当front等于rear或者count等于0时候
if(q->count==0)
{
return true;
}
else
{
return false;
}
}
//入队(判断队列是否是满的)
bool InsertQueue(Queue *q,int value)
{
if(q->count==q->size)
{
return true;
}
else
{
//1.将要插入数据赋值给队列尾
q->data[q->rear]=value;
//2.尾指针加一(rear+1/size)由于是循环队列
q->rear=(q->rear+1)%q->size;
//3.队列元素个数加一
q->count++;
return false;
}
}
//出队(判断队列是否为空)
bool DeleteQueue(Queue *q)
{
//队列是空
if(Queue_isEmpty(q))
return true;
else
{
//1.头指针加一,(front+1/size)由于是循环队列
q->front=q->front+1%q->size;
//2.队列元素个数减一
q->count--;
return false;
}
}
//遍历循环队列
bool TraversalQueue(Queue *q)
{
//队列是空
if(Queue_isEmpty(q))
return true;
else
{
int tail = q->front ;
while(tail != q->rear){
cout<<q->data[tail];
tail = (tail + 1)%q->size;
}
}
}