資料結構——C語言的迴圈佇列
阿新 • • 發佈:2018-12-08
C語言版迴圈佇列
#ifndef QUEUE #define QUEUE #define maxsize 4 typedef struct { int data[maxsize]; int front; int rear; }*Queue, Node; #endif #include<stdio.h> #include<stdlib.h> #include<stdbool.h> void initQueue(Queue queue) { queue->front = 0; queue->rear = 0; } bool isEmpty(Queue queue) { if (queue->front == queue->rear) { return true; } return false; } bool isFull(Queue queue) { if ((queue->rear + 1) % maxsize == queue->front) { return true; } return false; } bool Enqueue(Queue queue, int num) { if (isFull(queue)) { return false; } queue->data[queue->rear] = num; queue->rear = (queue->rear + 1) % maxsize; return true; } bool Dequeue(Queue queue, int *x) { if (isEmpty(queue)) { return false; } *x = queue->data[queue->front]; queue->front = (queue->front + 1) % maxsize; return true; } int QueueLength(Queue queue) { return (queue->rear - queue->front + maxsize) % maxsize; } int main(void) { Queue queue; queue = (Queue)malloc(sizeof(Node)); initQueue(queue); int choose; bool flag = true; while (flag) { printf("請輸入您要進行的操作:\n1:入隊\n2.出隊\n"); scanf("%d", &choose); if (choose == 1) { int num; printf("請輸入您要入隊的資料:"); scanf("%d", &num); if (Enqueue(queue, num)) { printf("%d入隊成功!\n", num); } else { puts("入隊失敗"); } puts("--------------------"); } else { int num; if (Dequeue(queue, &num)) { printf("%d已出佇列\n", num); } else { puts("出隊失敗"); } puts("---------------------"); } printf("長度:%d\n", QueueLength(queue)); } }
輸出結果