sinat_31829943 2015-10-25 03:51 采纳率: 60%
浏览 3243

C/C++ 简单括号匹配问题

我的程序,运行检测的括号匹配和实际不符麻烦帮忙看下问题

 #include<stdio.h>
typedef struct
{
    char ch[50];
    int top;
}SeqStack;
int Push(SeqStack &S,char x)
{
    if(S.top==49) return 0;
    S.top++;
    S.ch[S.top]=x;
    return 1;

}
int Pop(SeqStack &S,char x)
{
    if(S.top==-1) return 0;
    x=S.ch[S.top];
    S.top--;
    return 1;

}
int GetTop(SeqStack &S,char x)
{
    if(S.top==-1) return 0;
    x=S.ch[S.top];
    return 1;

}
int BracketMatch(char str[])
{
    SeqStack S;
    int i;
    char ch;
    S.top=-1;
    for(i=0;str[i]!='#';i++)
    {
        switch(str[i]){
        case'(':
        case'[':
        case'{':
            Push(S,str[i]);
            break;
        case')':
        case']':
        case'}':
            if(S.top==-1) {printf("\nÓÒÀ¨ºÅ¶àÓà");return 0;}
             else 
             {
                 GetTop(S,ch);
                 if((str[i]==')'&&ch=='(')||(str[i]==']'&&ch=='[')||(str[i]=='}'&&ch=='{')) Pop(S,ch);
                 else  {printf("\n¶ÔÓ¦µÄ×óÓÒÀ¨ºÅ²»Í¬Àà");return 0;}
             }
            }

    }if(S.top==-1)   {printf("\nÀ¨ºÅÆ¥Åä");return 1;}
        else printf("\n×óÀ¨ºÅ¶àÓ࣡");
    return 0;
}
void main()
{
    char ch[50];
    int i=0;
    char c;
    c=getchar();
    while(c!='\n')
    {
        ch[i]=c;
        c=getchar();
        i++;
    }
    BracketMatch(ch);
}

  • 写回答

1条回答 默认 最新

  • havedream_one 2015-10-25 04:28
    关注

    { if(S.top==-1) {printf("\nÓÒÀ¨ºÅ¶àÓà");return 0;}
    else
    {
    GetTop(S,ch);
    if((str[i]=='('&&ch==')')||(str[i]=='['&&ch==']')||(str[i]=='{'&&ch=='}')) Pop(S,ch);
    else {printf("\n¶ÔÓ¦µÄ×óÓÒÀ¨ºÅ²»Í¬Àà");return 0;}
    }
    }

    去掉最外层的括号试试

    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R