循环队列的实现
作者:互联网
#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;
}
标签:return,队列,SqQueue,实现,int,循环,front,data,rear 来源: https://www.cnblogs.com/lzard/p/15394842.html