括号匹配的判定----《数据结构》

Posted 自由的背包

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了括号匹配的判定----《数据结构》相关的知识,希望对你有一定的参考价值。

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

typedef struct{
    char *base;
    char *top;
    int stacksize;
}SqStack; 

int InitStack(SqStack &S){
    S.base = (char *)malloc(100*sizeof(char));
    if(!S.base){
        printf("储存空间分配失败");
        exit(-2);
    }
    S.top = S.base;
    S.stacksize = 100;
    return 1;
}

char GetTop(SqStack S){
    if(S.top!=S.base)
 
    return *(S.top-1); 
}
int Push(SqStack &S,char e){
    if(S.top-S.base==S.stacksize){
        return 0; 
    }
    
    *S.top++ = e;
    return 1;
}
int Pop(SqStack &S,char &e){
    if(S.base!=S.top)
    e = *--S.top;
    return 1;
}
int Judge(char e){
    if(e==(||e==)||e==[||e==])
        return 1;
    return 0;
}

int Judge2(char a,char b){
    if((a==(&&b==))||(a==[&&b==]))
        return 1;
    return 0;
}

int main(){
    SqStack S;
    char a,c,x,y;
    InitStack(S);
    printf("请输入表达式:"); 
    x = getchar();
    while(Judge(x)){
        printf("1");
        if(x==(||x==[){
            Push(S,x);
            x=getchar();
        }else{
            if(!Judge2(GetTop(S),x)){
                printf("不合法");
                exit(0);
            }
            Pop(S,c);
            x = getchar();
            }
        }
        
    printf("合法"); 
    
    return 0;    

    }
    

 

以上是关于括号匹配的判定----《数据结构》的主要内容,如果未能解决你的问题,请参考以下文章

括号匹配[栈]

括号匹配算法

如何理解这段代码片段中的两对括号?

用栈检测括号匹配

Java 栈 如何实现括号匹配

if-else语句中,if和else的配对原则各是啥