#include <stdio.h> #include <stdlib.h> #include <malloc.h>

#define MaxSize 100 typedef char ElemType;

// 定义循环队列结构体 typedef struct { ElemType *data[MaxSize]; int front, rear; } SqQueue;

// 初始化循环队列 void InitQueue(SqQueue *&q) { q = (SqQueue *)malloc(sizeof(SqQueue)); if (q == NULL) { printf("内存分配失败!\n"); return; } q->front = q->rear = 0; }

// 销毁循环队列 void DestroyQueue(SqQueue *&q) { free(q); q = NULL; }

// 判断循环队列是否为空 bool QueueEmpty(SqQueue *q) { return (q->front == q->rear); }

// 入队操作 bool enQueue(SqQueue *&q, ElemType *e) { if ((q->rear + 1) % MaxSize == q->front || e == NULL) { return false; } q->rear = (q->rear + 1) % MaxSize; q->data[q->rear] = e; return true; }

// 出队操作 bool deQueue(SqQueue *&q, ElemType *&e) { if (q->rear == q->front || e == NULL) { return false; } q->front = (q->front + 1) % MaxSize; e = q->data[q->front]; return true; }

int main() { SqQueue *queue = NULL; InitQueue(queue);

// 测试入队
ElemType *data1 = (ElemType *)malloc(sizeof(ElemType));
*data1 = 'A';
enQueue(queue, data1);
ElemType *data2 = (ElemType *)malloc(sizeof(ElemType));
*data2 = 'B';
enQueue(queue, data2);

// 测试出队
ElemType *dataOut = NULL;
deQueue(queue, dataOut);
printf("出队元素:%c\n", *dataOut);
free(dataOut);

// 销毁队列
DestroyQueue(queue);

return 0;

}

C语言循环队列代码优化建议及示例

原文地址: https://www.cveoy.top/t/topic/orcH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录