队列—顺序结构(循环队列)

    技术2022-07-11  64

    #include<stdio.h> #define Maxsize 5 #define OK 1 typedef int QElemtype; typedef int Status; typedef struct { QElemtype data[Maxsize]; QElemtype front; QElemtype rear; }SqQueue; SqQueue* Q; Status InitQueue(SqQueue* Q) //初始化,输出队列 { scanf_s("%d", &Q->data[Q->rear]); if (Q->data[Q->rear]) { Q->rear = (Q->rear + 1) % Maxsize; InitQueue(Q); } else Q->rear = (Q->rear - 1) % Maxsize; return OK; } Status Print(SqQueue* Q) //打印队列 { printf("队列为:"); QElemtype i = Q->front; while (i != Q->rear) { printf("]", Q->data[i]); i = (i + 1) % Maxsize; } printf("]", Q->data[Q->rear]); printf("\n"); return OK; } Status IntQueue(SqQueue* Q) //从队尾插入元素 { QElemtype i = 0; Q->rear = (Q->rear + 1) % Maxsize; if (Q->rear != Q->front) { printf("输入插入元素:"); scanf_s("%d", &Q->data[Q->rear]); printf("是否继续插入:1.是 2.否"); scanf_s("%d", &i); } if (Q->rear == Q->front) { printf("队满\n"); Q->rear = (Q->rear - 1) % Maxsize; } while (i == 1) { IntQueue(Q); i = 0; } return OK; } Status PushOut(SqQueue* Q) //将首元素出队 { printf("队列输出:"); printf("%d\n", Q->data[Q->front]); Q->front = (Q->front + 1) % Maxsize; return OK; } int main() { Q = (SqQueue*)malloc(sizeof(SqQueue)); Q->rear = 0; Q->front = 0; InitQueue(Q); Print(Q); PushOut(Q); IntQueue(Q); Print(Q); return 0; }
    Processed: 0.016, SQL: 9