题解 | #【模板】循环队列#

【模板】循环队列

https://www.nowcoder.com/practice/0a3a216e50004d8bb5da43ad38bcfcbf

循环队列

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include <string.h>
#define MaxSize 10000
struct queue {
    int* data;
    int front;
    int tail;
};
void InitQueue(struct queue* q,int maxsize) {
    q->data = (int *)malloc(sizeof(int)*maxsize);
    q->front = 0;
    q->tail = 0;
}
bool pushQueue(struct queue* q, int temp,int maxsize) {
    if ((q->tail+1) % (maxsize) == q->front) {
        return false;
    } else {
        q->data[q->tail] = temp;
        q->tail = (q->tail +1)%maxsize;
        return true;
    }
}

bool popQueue(struct queue* q, int* temp,int maxsize) {
    if (q->front == q->tail) return false;
    else {
        *temp = q->data[q->front];
        q->front = (q->front+1)%maxsize;
        return true;
    }
}

bool frontQueue(struct queue* q,int* temp) {
    if (q->front == q->tail) return false;
    else {
        *temp = q->data[q->front];
        return true;
    }
}
int main() {
    int n,q;
    struct queue* que= (struct queue*)malloc(sizeof(struct queue));
    scanf("%d %d",&n,&q);
    n++;
    InitQueue(que,n);
    for(int i = 0;i<q;i++){
        char temp[6];
        scanf("%s",temp);
        if(!strcmp(temp,"push")){
            int temp_num;
            scanf("%d",&temp_num);
            if(!pushQueue(que,temp_num,n))
                printf("full\n");
        }else if(!strcmp(temp,"front")){
            int temp;
            if(!frontQueue(que,&temp))
                printf("empty\n");
            else printf("%d\n",temp);
        }else{
            int temp;
            if(!popQueue(que,&temp,n))
                printf("empty\n");
            else printf("%d\n",temp);
        }
    }
}

全部评论

相关推荐

用微笑面对困难:只要你保证项目和获奖都是真的就行尤其是“对战,总负责人”啊这些套职,基本上队员,打杂的都这么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务