顺序队列(循环队列)的创建及基本操作

137 阅读1分钟

循环队列

#define MAXSIZE 10
struct queue{
	int rear;
	int front;
	int a[MAXSIZE];
}q;

队列的初始化

void initQueue(queue &q){
	q.front=0;
	q.rear=0;
}

得到队列的长度

int getQueueLength(queue &q){
	return ((q.rear-q.front+MAXSIZE)%MAXSIZE);
}

入队操作

void push(queue &q,int x){//前提:队列未满 
	q.a[q.rear]=x;
	q.rear=(q.rear+1)%MAXSIZE;
}

出队操作

void pop(queue &q){//前提:队列未空 
	q.front=(q.front+1)%MAXSIZE;
}

获取队头元素

int getHead(queue &q){
	return q.a[q.front];
}

获取队尾元素

int getTail(queue &q){
	return q.a[q.rear-1];
}

判断队列是否为满

bool isFull(queue &q){
	if((q.rear+1)%MAXSIZE==q.front) return 1;
	else return 0; 
}

判断队列是否为空

bool isEmpty(queue &q){
	if(q.front==q.rear) return 1;
	else return 0;
}