循环队列
#include <stdio.h>
#include <stdlib.h>
#define Max 6
typedef struct loopQueue {
int front;
int rear;
int data[Max];
}loopQueue;
loopQueue* initLoopQueue() {
loopQueue* lQ = (loopQueue*)malloc(sizeof(loopQueue));
lQ->front = lQ->rear = 0;
return lQ;
}
int isEmpty(loopQueue* lQ) {
if (lQ->front == lQ->rear) {
return 1;
}
return 0;
}
int isFull(loopQueue* lQ) {
if ((lQ->rear+1)%Max == lQ->front) {
return 1;
}
return 0;
}
void enLoopQueue(loopQueue* lQ, int data) {
if (!isFull(lQ)) {
lQ->data[lQ->rear] = data;
lQ->rear = (lQ->rear + 1) % Max;
}
}
int deLoopQueue(loopQueue* lQ) {
if (!isEmpty(lQ)) {
int data = lQ->data[lQ->front];
lQ->front = (lQ->front + 1) % Max;
return data;
}
return 0;
}
void printLoopQueue(loopQueue* lQ) {
int length = (lQ->rear - lQ->front + Max) % Max;
int index = lQ->front;
for (int i = 0; i < length; i++) {
printf("%d ", lQ->data[index]);
index = (index + 1) % Max;
}
printf("\n");
}
void test() {
loopQueue* lQ = initLoopQueue();
enLoopQueue(lQ, 1);
enLoopQueue(lQ, 2);
enLoopQueue(lQ, 3);
enLoopQueue(lQ, 4);
printLoopQueue(lQ);
deLoopQueue(lQ);
printLoopQueue(lQ);
}
int main() {
test();
return 0;
}