题解 | #【模板】队列#

【模板】队列

https://www.nowcoder.com/practice/afe812c80ad946f4b292a26dd13ba549

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义队列的最大大小
#define MAX_SIZE 100000

// 定义队列结构
typedef struct {
    int data[MAX_SIZE];
    int front;
    int rear;
} Queue;

// 初始化一个空队列
void initQueue(Queue* q) {
    q->front = 0;
    q->rear = 0;
}

// 检查队列是否为空
int isEmpty(Queue* q) {
    return q->front == q->rear;
}

// 检查队列是否已满
int isFull(Queue* q) {
    return (q->rear + 1) % MAX_SIZE == q->front;
}

// 将元素推入队列
void push(Queue* q, int x) {
    if (isFull(q)) {
        printf("error\n");
        return;
    }
    q->data[q->rear] = x;
    q->rear = (q->rear + 1) % MAX_SIZE;
}

// 从队列中弹出元素
void pop(Queue* q) {
    if (isEmpty(q)) {
        printf("error\n");
        return;
    }
    printf("%d\n", q->data[q->front]);
    q->front = (q->front + 1) % MAX_SIZE;
}

// 获取队首元素但不移除它
void front(Queue* q) {
    if (isEmpty(q)) {
        printf("error\n");
        return;
    }
    printf("%d\n", q->data[q->front]);
}

int main() {
    int n;
    scanf("%d", &n);

    Queue q;
    initQueue(&q);

    for (int i = 0; i < n; ++i) {
        char op[10];
        scanf("%s", op);
        if (strcmp(op, "push") == 0) {
            int x;
            scanf("%d", &x);
            push(&q, x);
        } else if (strcmp(op, "pop") == 0) {
            pop(&q);
        } else if (strcmp(op, "front") == 0) {
            front(&q);
        }
    }

    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务