题解 | #【模板】队列#

【模板】队列

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

一个数组,双指针

#include<string.h>

#include <stdio.h>

#define MAX 100000

// 定义一个栈

typedef struct  Queue{

    int a[MAX];

    int head;

    int tail;

}*queue;

// 初始化

 void initStack(queue s){

    s->head = 0;

    s->tail = 0;

 }

//  进入函数

void push(queue s, int x){

    s->a[s->tail] = x;

    s->tail++;

}

// 出栈

int pop(queue s){

    if(s->head==s->tail){

        return -1;

    }

   

    return s->a[s->head++];

}

// 输出栈顶,栈顶不出栈

int front(queue s){

    if(s->head ==s->tail){

        return -1;

    }

   return  s->a[s->head];

}

int main(){

    queue s = (queue)malloc(sizeof(struct Queue));

    initStack(s);

    int  n = 0;

    scanf("%d",&n);

    while(n--){

        // 判断是push pop 还是top

         char *str = (char*)malloc(6*sizeof(char));

//int  strcmp(const str s1,const str s2) ,如果s1>s2返回<0// s1>s2 return >0 s1 = s2 return 0;

    scanf("%s",str);

    if(!strcmp(str,"push")){

        int num = 0;

        scanf("%d",&num);

        push(s,num);

    }

      if(!strcmp(str,"pop")){

       int num1 =  pop(s);

       if(num1 ==-1){

        printf("error\n");

        continue;

        // 直接进入下一次循环

       }

       printf("%d\n",num1);

    }

      if(!strcmp(str,"front")){

       int num2 =  front(s);

       if(num2 ==-1){

        printf("error\n");

        continue;

        // 直接进入下一次循环

       }

       printf("%d\n",num2);

    }

    }

    return 0;

}

全部评论

相关推荐

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