#include "stdio.h"
#include "stdlib.h"
#include "stdbool.h"
#define MAXSIZE 5
typedef int DataType;
typedef struct {
DataType data[MAXSIZE];
int front;
int rear;
}SqQueue;
bool queueEmpty(SqQueue *queue);
bool enQueue(SqQueue *queue, int i);
DataType getHead(SqQueue* queue);
DataType deQueue(SqQueue *queue);
int length(SqQueue *queue);
int main() {
SqQueue sqQueue = {{0}, 0, 0};
SqQueue* pQueue = &sqQueue;
length(pQueue);
bool a = queueEmpty(pQueue);
printf("队列长度:%d\n", length(pQueue));
printf("入队:5、4、3、2\n");
enQueue(pQueue, 5);
enQueue(pQueue, 4);
enQueue(pQueue, 3);
enQueue(pQueue, 2);
printf("队列长度:%d\n", length(pQueue));
printf("出队:%d\n", deQueue(pQueue));
printf("入队:6\n");
enQueue(pQueue, 6);
printf("队头元素:%d\n", getHead(pQueue));
return 0;
}
int length(SqQueue *queue) {
return (queue->rear - queue->front + MAXSIZE) % MAXSIZE;
}
DataType getHead(SqQueue* queue) {
if (queueEmpty(queue)) {
return -1;
}
return queue->data[queue->front];
}
DataType deQueue(SqQueue *queue) {
if (queueEmpty(queue)) {
return -1;
}
int data = queue->data[queue->front];
queue->front = (queue->front + 1) % MAXSIZE;
return data;
}
bool enQueue(SqQueue *queue, int value) {
if ((queue->rear + 1) % MAXSIZE == queue->front) {
return false;
}
queue->data[queue->rear] = value;
queue->rear = (queue->rear + 1) % MAXSIZE;
return true;
}
bool queueEmpty(SqQueue *queue) {
return queue->front == queue->rear;
}