求助,在电脑上调试的好好的提交之后编译不通过

P1241 括号序列

筱刘丶 @ 2020-09-11 17:17:05


#include<stdio.h>
#include<stdlib.h>
struct stack{
    char *top;
    char *base;
    int sizestack;
}; 
void initstack(struct stack &s){
    s.base=(char *)malloc(100*sizeof(char));
    if(!s.base) exit(-1);
    s.top=s.base;
    s.sizestack=100;
}
void push(struct stack &s,char c){
    if(s.top-s.base==s.sizestack){
        s.base=(char *)realloc(s.base,(s.sizestack+10)*sizeof(char));
        s.top=s.base+s.sizestack;
        s.sizestack+=10;
    }
    *s.top++=c;
}
int pop(struct stack &s,char &e){
    if(s.top==s.base) return 0;
    e=*--s.top;
}
int gettop(struct stack &s){
    if(s.top==s.base) return 0;
    return 1;
}
int main(){
    char c[100];
    int i;              
    for(i=1;i<=100;i++){
        if((c[i]=getchar())=='\n')
        break;
    }
    for(int j=i;j>=1;j--){
        if(c[j])
        for(int k=j;k>=1;k--){
            if((c[j]-c[k])==1){
                printf("%c%c",c[k],c[j]);
                c[k]=c[j]=0;
                break;
            }
        }
    }
    struct stack s;
    initstack(s);
    for(int j=i-1;j>=1;j--){
        if(c[j])
        push(s,c[j]);
    }
    char a;
    while(gettop(s)){
        pop(s,a);
        if(a==40)
        printf("%c%c",a,a+1);
        if(a==91)
        printf("%c%c",a,a+2);
        if(a==93)
        printf("%c%c",a-2,a);
        if(a==41)
        printf("%c%c",a-1,a);
    }   
    return 0;
}

by tuxiaobei @ 2020-09-11 17:24:17

@筱刘丶 请选择 C++ 语言提交


by Smile_Cindy @ 2020-09-11 18:01:08

@筱刘丶 语言选C++


|