#include<stdio.h> #include<stdlib.h> #include<string.h> //循环队列 typedef struct { int *data;//数据域 int maxsize;//最大长度 int rear, front;//队尾,队头 } CirQueue; void InitCirQueue(CirQueue *q, int max) {//初始化 q->maxsize = max; q->data = (int*)malloc(sizeof(int)*max);//动态分配内存空间 q->rear = 0; q->front = 0; } int CirQueueisEmpty(CirQueue *q) {//判空 if (q->front == q->rear)//队头==队尾 return 0; else { return 1; } } int CirQueueisFull(CirQueue *q) {//判满 if (q->front == (q->rear + 1) % (q->maxsize)) {//预留最后一个空间来做取余 return 0; } else { return 1; } } void AddCirQueue(CirQueue *q, int x) {//添加 q->data[q->rear] = x; q->rear = (q->rear + 1) % (q->maxsize);//超过最大长度添加则覆盖 } int CirQueueDisplay(CirQueue *q) {// 显示 int x; x = q->data[q->front]; q->front = (q->front + 1) % (q->maxsize);//移动队头 return x; } int CirQueueFront(CirQueue *q) {//取队头 int x = q->data[q->rear]; return x; } int main() { CirQueue q; InitCirQueue(&q, 5); AddCirQueue(&q, 1); AddCirQueue(&q, 2); AddCirQueue(&q, 5); printf("%d ",CirQueueDisplay(&q)); printf("%d ",CirQueueDisplay(&q)); printf("%d ",CirQueueDisplay(&q)); return 0; }
让我们一起遨游编程的海洋。