首页 > 其他 > 详细

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

时间:2017-11-20 22:48:26      阅读:221      评论:0      收藏:0      [点我收藏+]
#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;    

    }
    

 

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

原文:http://www.cnblogs.com/peak01/p/7868502.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!