用栈实现括号匹配

#define Maxisize 10
typedef struct{
    char data[Maxsize];
    int top;
}SqStack;
void InitStack(SqStack &S)
bool StackEmpty(SqStack S)
bool Push(SqStack &S,char x)
bool Pop(SqStack &s,char &X)
bool bracketCheck(char str[],int length){
    SqStack S;
    InitStack(S);
    for(int i=0;i<length;i++){
        if(str[i]=='('||str[i]=='['||str[i]=='{'){
            Push(S,str[i]); //扫描到左括号,入栈 
        }
        else{
            if(StackEmpty(S)) //扫描到右括号,且当前栈空 
            return false;
            
            char topElem;
            Pop(S,topElem); //栈顶元素出栈
            if(str[i]==')'&& topElem!='(')
              return false;
            if(str[i]==']'&& topElem!='[')
              return false;
            if(str[i]=='}'&& topElem!='{')
               return false; 
        } 
        
    }
    return StackEmpty(S); //检索完所有括号后,栈空说明匹配成功 
}

 

posted @ 2020-05-02 22:39  iiiiiki  阅读(214)  评论(0)    收藏  举报