怎么回事哪里错了

P1241 括号序列

PrincedeChine @ 2024-09-30 21:41:58

#include<iostream>
#include<stdio.h>
#include<cstring>
#define maxsize 400

using namespace std;

typedef struct{
    char data[maxsize];
    int top;
}sqstack;

void init(sqstack &S){
    S.top = -1;
}
bool push(sqstack &S,char x){
    if(S.top==maxsize-1){
        return false;
    }
    S.data[++S.top]=x;
    return true;
}

bool Pop(sqstack &S,char &x){
    if(S.top==-1){
        return false;
    }
    x=S.data[S.top--];
    return true;
}

bool match(char str[],int length)
{
    sqstack S;
    init(S);
    for(int i=0;i<length;i++){
        if (str[i]=='('||str[i]=='['||str[i]=='{')
        {
            push(S,str[i]);
        }else{
            if(str[i]==')'){
                cout<<'()';
            }
            if(str[i]==']'){
                cout<<'[]';
            }if(str[i]=='}'){
                cout<<'{}';
            }
        }

        char topElem;
        Pop(S,topElem);
        if(str[i]==')'&&topElem!='('){
            cout<<'()';
        }
        if(str[i]==']'&&topElem!='['){
            cout<<'[]';
        }
        if(str[i]=='}'&&topElem!='{'){
            cout<<'{}';
        }   
    }
    return true;
}

int main(){
    int i = 0;
    int j;
    char str[400] = {0};
    char y;

    while (y != '\n') {
        scanf("%c", &str[i++]);
        y = getchar();
    }
    j = sizeof(str);
    match(str, j);
    return 0;
}

|