1. 程式人生 > 其它 >迴圈佇列的實現

迴圈佇列的實現

#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;
}