题解 | #设计getMin功能的栈#

设计getMin功能的栈

https://www.nowcoder.com/practice/05e57ce2cd8e4a1eae8c3b0a7e9886be

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

#define MAX_SIZE 1000000

typedef struct {
    int data[MAX_SIZE];
    int top;
} stack;

int main() {
    int cnt, i, j, k = 0, temp, flag = 0, q;
    int minn = 1000001;
    char buf[50] = {'\0'};
    char str[50] = {'\0'};
    char str1[10] = "getMin";
    char str2[10] = "pop";
    stack* s = (stack*)malloc(sizeof(stack));
    s->top = -1;
    scanf("%d", &cnt);
    getchar();
    for(i = 1; i <=cnt; i++) {
        scanf("%[^\n]", str);
        getchar();
        if(!strcmp(str, str2)){
            s->top--;
        }
        else if(!strcmp(str, str1)) {
            for(q = 0; q<=s->top; q++){
                if(s->data[q]<minn){
                    minn = s->data[q];
                }
            }
            printf("%d\n", minn);
            minn  = 1000001;
        }
        else {
            for(j = 0; j < strlen(str); j++) {
                if(str[j] == '-') {
                    flag = 1;
                    break;
                }
            }
            do 
            {
                if(str[k]<'0'||str[k]>'9'){
                    k++;
                }
                else{
                    strcat(buf,&str[k]);
                    break;
                }
            }while(str[k]!='\0');
            k = 0;
            temp = atoi(buf);
            memset(buf, '\0', sizeof(buf));
            temp = (flag==1 ? (0-temp) : temp);
            flag = 0;
            s->top++;
            s->data[s->top] = temp;
        }
    }
    return 0;
}

全部评论

相关推荐

jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务