迴圈佇列的實現
阿新 • • 發佈:2021-10-11
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include<stdbool.h> #define MAXQSIZE 5 // 順序佇列的實現 typedef struct { int* data; int front; int rear; } SqQueue; // 初始化 bool init(SqQueue *q) { q->data = malloc(sizeof(sizeof(int) * MAXQSIZE)); if (q->data == NULL) return false; q->rear = q->front = 0; return true; } // 銷燬 void destroy(SqQueue *q) { if (q->data) free(q->data); q->data = NULL; q->front = q->rear = 0; } // 清空 void clear(SqQueue *q) { q->front = q->rear = 0; } // 判空 bool empty(SqQueue q) { return q.front == q.rear; } // 讀隊頭元素 bool getHead(SqQueue q, int* x) { if (empty(q)) return false; *x = q.data[q.front]; return true; } // 入隊 bool enQueue(SqQueue *q, int x) { // 隊滿 if ((q->rear + 1) % MAXQSIZE == q->front) return false; q->data[q->rear] = x; q->rear = (q->rear + 1) % MAXQSIZE; return true; } // 出隊 bool deQueue(SqQueue *q, int* x) { // 隊空 if (empty(*q)) return false; *x = q->data[q->front]; q->front = (q->front + 1) % MAXQSIZE; return true; } // 求佇列長度 bool length(SqQueue q) { return (q.front - q.rear + MAXQSIZE) % MAXQSIZE; } int main(void) { return 0; }