// // Created by Polaris on 2022/4/27. // #include#include #define DataType int #define MAXSIZE 100 typedef struct { DataType *data; int front; int rear; int size; }LinearCircularQueue; LinearCircularQueue* initQueue(int size) { LinearCircularQueue *queue = (LinearCircularQueue*) malloc(sizeof(LinearCircularQueue)); queue -> data = (int*)malloc(sizeof(int)*size); queue -> front = 0; queue -> rear = 0; queue -> size = size; } int getSize(LinearCircularQueue *queue) { if(queue == NULL) { return -1; } return queue -> size; } int isEmpty(LinearCircularQueue *queue) { if(queue == NULL) { return -1; } return queue -> front == queue -> rear ? 1 : 0; } int isFull(LinearCircularQueue *queue) { if(queue == NULL) { return -1; } return (queue -> rear + 1) % (queue -> size) == queue -> front ? 1 : 0; } int push(LinearCircularQueue *queue, DataType data) { if(isFull(queue)) { return -1; } queue -> data[queue -> rear] = data; queue -> rear = (queue -> rear + 1) % (queue -> size); return 1; } DataType pop(LinearCircularQueue *queue) { if(isEmpty(queue)) { return -1; } DataType data = queue -> data[queue -> front]; queue -> front = (queue -> front + 1) % (queue -> size); return data; } DataType getFront(LinearCircularQueue *queue) { return queue -> data[queue -> front]; } DataType getRear(LinearCircularQueue *queue) { return queue -> data[queue -> rear]; }



