码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-20 23:25:31      阅读:416      评论:0      收藏:0      [点我收藏+]

标签:print   ++   get   include   ack   tchar   sizeof   string   turn   

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

    }
    

 

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

标签:print   ++   get   include   ack   tchar   sizeof   string   turn   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!