C语言循环队列代码优化建议及示例
#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;
}
原文地址: https://www.cveoy.top/t/topic/orcH 著作权归作者所有。请勿转载和采集!