数据结构——队列

xiaoxiao2021-02-28  98

#include <stdio.h> #define QUEUE_SIZE  100 #define OK            0    #define ERROR        -1     typedef int DataType; typedef struct { DataType data[QUEUE_SIZE]; int rear, front; }SeqQueue; // 置空队列 int InitQueue(SeqQueue *q) { if (q == NULL) { return ERROR; } q->rear = 0; q->front = 0; return OK; } // 判断是否空队 int QueueEmpty(SeqQueue *q) { if (q == NULL) { return ERROR; } return q->rear == q->front; } // 判断是否队满 int QueueFull(SeqQueue *q) { if (q == NULL) { return ERROR; } return (q->rear+1)%QUEUE_SIZE == q->front; } // 入队 int EnQueue(SeqQueue *q, int data) { if (q == NULL) { return ERROR; } if (QueueFull(q)) { return ERROR; } q->rear = (q->rear+1) % QUEUE_SIZE; q->data[q->rear] = data; return OK; } // 出队 int DeQueue(SeqQueue *q) { if (q == NULL) { return ERROR; } if (QueueEmpty(q)) { return ERROR; } q->front = (q->front+1) % QUEUE_SIZE; return q->data[q->front]; } // 获取队头元素 int GetFront(SeqQueue *q) { if (q == NULL) { return ERROR; } if (QueueEmpty(q)) { return ERROR; } int pos = (q->front+1) % QUEUE_SIZE; return q->data[pos]; } int main() { SeqQueue queue; if (InitQueue(&queue) != OK) { return -1; } if (QueueEmpty(&queue)) { printf ("空队列\n"); } else { printf ("不是空队列\n"); } int i=0; for (i = 0; i<10; i++) { EnQueue(&queue, i); } if (QueueEmpty(&queue)) { printf ("空队列\n"); } else { printf ("不是空队列\n"); } for (i = 0; i<10; i++) { printf ("M", DeQueue(&queue)); } if (QueueEmpty(&queue)) { printf ("空队列\n"); } else { printf ("不是空队列\n"); }     return 0; }
转载请注明原文地址: https://www.6miu.com/read-65889.html

最新回复(0)