循环队列的实现

代码如下:

#include<iostream>
using namespace std;//使用标准库,作用防止重名的干扰
typedef int ElemType;//就是自定义一个类型名ElemType
typedef int Status;//自定义类型的语句。
//循环队列结构体定义
typedef struct{
int front;//前
int rear;//后
int maxSize; //最大存储量
ElemType *element; //首地址
}Queue;

//创建一个能容纳mSize的队列
void Create(Queue *Q,int maxSize){
Q->maxSize=maxSize;
Q->element=(ElemType *)malloc(sizeof(ElemType)*maxSize);
Q->front=Q->rear=0;
}

//销毁一个已经存在的队列,释放队列占用的空间
void Destroy(Queue *Q){
Q->maxSize=-1;
free(Q->element);
Q->front=Q->rear=-1;
}

//判断是否为空
bool isEmpty(Queue *Q){//bool表示布尔型变量
return Q->front==Q->rear;
}

bool isFull(Queue *Q){
return (Q->rear+1)%(Q->maxSize)==Q->front;
}

//获取头元素,通过x返回
bool Front(Queue *Q,ElemType *x){
if(isEmpty(Q))
return false;
*x=Q->element[(Q->front+1)%(Q->maxSize)];
return true;
}

//进队操作,在对尾插入x
bool EnQueue(Queue *Q,ElemType x){
if(isFull(Q))
return false;
Q->rear=(Q->rear+1)%Q->maxSize;
Q->element[Q->rear]=x;
return true;
}

//出队操作
bool Dequeue(Queue *Q){
if(isEmpty(Q))
return false;
Q->front=(Q->front+1)%Q->maxSize;
return true;
}

//清除队列中全部元素
void Clear(Queue *Q){
Q->front=Q->rear=0;
}

int main(){
int x,y;
Queue q;
Create(&q,10);
for(int i=0;i<10;i++){
EnQueue(&q,i);
}
Front(&q,&x);
cout<<"队头元素: "<<x<<endl;
cout<<"队列元素: ";
for(int j=0;j<9;j++){
Front(&q,&y);
cout<<y<<" ";
Dequeue(&q);
}
cout<<endl;
return 0;
}

运行结果如下:

数据结构循环队列的实现_微信公众号


欢迎您关注我的微信公众号:学习微站(studysth)

数据结构循环队列的实现_人邮_02