循环队列的实现

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#define MAXQSIZE 5 
// 顺序队列的实现
typedef struct {
	int* data;
	int front;
	int rear;

} SqQueue;

// 	初始化
bool init(SqQueue *q) {
	q->data = malloc(sizeof(sizeof(int) * MAXQSIZE));
	if (q->data == NULL)	return false;
	q->rear = q->front = 0;
	return true;
}
//	销毁
void destroy(SqQueue *q) {
	if (q->data)	free(q->data);
	q->data = NULL;
	q->front = q->rear = 0;
}
//	清空 
void clear(SqQueue *q) {
	q->front = q->rear = 0;
}
//	判空 
bool empty(SqQueue q) {
	return q.front == q.rear;
}
//	读队头元素 
bool getHead(SqQueue q, int* x) {
	if (empty(q))	return false;
	*x = q.data[q.front];
	return true;
}
//	入队
bool enQueue(SqQueue *q, int x) {
	//	队满 
	if ((q->rear + 1) % MAXQSIZE == q->front)	return false;
	q->data[q->rear] = x;
	q->rear = (q->rear + 1) % MAXQSIZE;
	return true;
}
//	出队
bool deQueue(SqQueue *q, int* x) {
	//	队空
	if (empty(*q))	return false;
	*x = q->data[q->front];
	q->front = (q->front + 1) % MAXQSIZE;
	return true;
}
//	求队列长度
bool length(SqQueue q) {
	return (q.front - q.rear + MAXQSIZE) % MAXQSIZE;
}


int main(void)
{
	

	return 0;
}
上一篇:CG.队列的操作


下一篇:队列的顺序表现和实现 02