题解 | #【模板】队列#

【模板】队列

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

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

#define MAX_SIZE 100000  // 修改队列的最大容量

struct node {
    int data[MAX_SIZE];
    int front;
    int rear;
};
typedef struct node* queue;

void push(queue ptrs, int item) {
    if ((ptrs->rear + 1) % MAX_SIZE == ptrs->front) {
        printf("error\n");  // 队列已满,无法入队
        return;
    }
    ptrs->rear = (ptrs->rear + 1) % MAX_SIZE;
    ptrs->data[ptrs->rear] = item;
}

int pop(queue ptrs) {
    if (ptrs->front == ptrs->rear) {
        printf("error\n");  // 队列为空,无法出队
        return -1;
    }
    ptrs->front = (ptrs->front + 1) % MAX_SIZE;
    return ptrs->data[ptrs->front];
}

void front(queue ptrs) {
    if (ptrs->front == ptrs->rear) {
        printf("error\n");  // 队列为空,无法获取头元素
        return;
    }
    printf("%d\n", ptrs->data[(ptrs->front + 1) % MAX_SIZE]);
}

int main() {
    queue ptrs = (queue)malloc(sizeof(struct node));
    ptrs->front = 0;
    ptrs->rear = 0;

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

    char operation[10];
    int value;

    while (n--) {
        scanf("%s", operation);
        if (strcmp(operation, "push") == 0) {
            scanf("%d", &value);
            push(ptrs, value);
        } else if (strcmp(operation, "pop") == 0) {
            int result = pop(ptrs);
            if (result != -1) {
                printf("%d\n", result);
            }
        } else if (strcmp(operation, "front") == 0) {
            front(ptrs);
        }
    }

    free(ptrs);
    return 0;
}

全部评论

相关推荐

SadnessAlex:跟三十五岁原则一样,人太多给这些***惯坏了
点赞 评论 收藏
分享
愤怒的潜伏者在开会:你不攻击他,我可攻击你了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务