干货5:顺序队列

来源:互联网 发布:emui8.0 知乎 编辑:程序博客网 时间:2024/05/22 01:44
#define TRUE  1#define FALSE 0#define SIZE 10typedef int QueueData;typedef struct _queue{QueueData data[SIZE];int front;     // 指向队头的下标int rear;      // 指向队尾的下标}Queue; //  置空队int InitQueue (Queue *q){if (q == NULL){errno = ERROR;return FALSE;}q->front = 0;q->rear  = 0;return TRUE;}
//  判队空否
int QueueEmpty (Queue *q)
{if (q == NULL){errno = ERROR;return FALSE;}return q->front == q->rear;}//  判队满否int QueueFull (Queue *q) {if (q == NULL){errno = ERROR;return FALSE;}return q->front == (q->rear+1)%SIZE;} 
// 进队int EnQueue (Queue *q, QueueData x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueFull(q)){errno = FULL_QUEUE;return FALSE;}q->rear = (q->rear+1) % SIZE;q->data[q->rear] = x;return TRUE;}
// 出队int DeQueue (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}q->front = (q->front + 1) % SIZE;*x = q->data[q->front];return TRUE;}
// 获取队头元素int GetFront (Queue *q, QueueData *x){if (q == NULL){errno = ERROR;return FALSE;}if (QueueEmpty(q)){errno = EMPTY_QUEUE;return FALSE;}int index = (q->front + 1) % SIZE;*x = q->data[index];return TRUE;}