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;
}