对循环队列的操作
void initQueue(SeqQueue *q);//栈的初始化
void clearQueue(SeqQueue *q);//清除队中所有的元素
bool queueEmpty(SeqQueue *q);//判断队是否为空
bool queueFull(SeqQueue *q);//判断是否队满
int getQueue(SeqQueue *q,DataType *e);//获取队头元素
int deQueue(SeqQueue *q,DataType *e);//出队
int enQueue(SeqQueue *q,DataType e);//在队中添加一个元素
int queueLength(SeqQueue *s);//求队的长度
队列的存储结构
typedef struct{
DataType data[QUEUESIZE];
int front;//队头指针
int rear;//队尾指针
}SeqQueue;
void initQueue(SeqQueue *q);//栈的初始化
void initQueue(SeqQueue *q)//栈的初始化
{
q->front = 0;
q->rear = 0;
}
void clearQueue(SeqQueue *q);//清除队中所有的元素
void clearQueue(SeqQueue *q)//清除队中所有的元素
{
q->front = 0;
q->rear = 0;
}
bool queueEmpty(SeqQueue *q);//判断队是否为空
bool queueEmpty(SeqQueue *q)//判断队是否为空
{
return q->front == q->rear;
}
bool queueFull(SeqQueue *q);//判断是否队满
bool queueFull(SeqQueue *q)//判断是否队满
{
return q->front == (q->rear+1)%QUEUESIZE;
}
int getQueue(SeqQueue *q,DataType *e);//获取队头元素
int getQueue(SeqQueue *q,DataType *e)//获取队头元素
{
if(!queueEmpty(q))
*e = q->data[q->front];
}
int deQueue(SeqQueue *q,DataType *e);//出队
int deQueue(SeqQueue *q,DataType *e)//出队
{
if(!queueEmpty(q)){
*e = q->data[q->front];
q->front = (q->front+1)%QUEUESIZE;
}
}
int enQueue(SeqQueue *q,DataType e);//在队中添加一个元素
int enQueue(SeqQueue *q,DataType e)//在队中添加一个元素
{
if(!queueFull(q)){
q->data[q->rear] = e;
q->rear = (q->rear+1)%QUEUESIZE;
}
}
int queueLength(SeqQueue *s);//求队的长度,有公式
int queueLength(SeqQueue *q)//求队的长度
{
return (q->rear-q->front+QUEUESIZE)%QUEUESIZE;
}
#include <bits/stdc++.h>
#define QUEUESIZE 100
typedef int DataType;
typedef struct{
DataType data[QUEUESIZE];
int front;//队头指针
int rear;//队尾指针
}SeqQueue;
void initQueue(SeqQueue *q);//栈的初始化
void clearQueue(SeqQueue *q);//清除队中所有的元素
bool queueEmpty(SeqQueue *q);//判断队是否为空
bool queueFull(SeqQueue *q);//判断是否队满
int getQueue(SeqQueue *q,DataType *e);//获取队头元素
int deQueue(SeqQueue *q,DataType *e);//出队
int enQueue(SeqQueue *q,DataType e);//在队中添加一个元素
int queueLength(SeqQueue *s);//求队的长度
int main()
{
SeqQueue sq;
initQueue(&sq);
for(int i = 0;i < 5;i++){
enQueue(&sq,i);
}
int len = queueLength(&sq);
printf("%d\n",len);
if(queueEmpty(&sq)){
printf("队列为空");
}else {
for(int i = 0;i < 4;i++){
int n;
deQueue(&sq,&n);
printf("%d\n",n);
}
}
clearQueue(&sq);
return 0;
}
int queueLength(SeqQueue *q)//求队的长度
{
return (q->rear-q->front+QUEUESIZE)%QUEUESIZE;
}
int enQueue(SeqQueue *q,DataType e)//在队中添加一个元素
{
if(!queueFull(q)){
q->data[q->rear] = e;
q->rear = (q->rear+1)%QUEUESIZE;
}
}
int deQueue(SeqQueue *q,DataType *e)//出队
{
if(!queueEmpty(q)){
*e = q->data[q->front];
q->front = (q->front+1)%QUEUESIZE;
}
}
int getQueue(SeqQueue *q,DataType *e)//获取队头元素
{
if(!queueEmpty(q))
*e = q->data[q->front];
}
bool queueFull(SeqQueue *q)//判断是否队满
{
return q->front == (q->rear+1)%QUEUESIZE;
}
bool queueEmpty(SeqQueue *q)//判断队是否为空
{
return q->front == q->rear;
}
void initQueue(SeqQueue *q)//栈的初始化
{
q->front = 0;
q->rear = 0;
}
void clearQueue(SeqQueue *q)//清除队中所有的元素
{
q->front = 0;
q->rear = 0;
}