惊鸿之羽 2020-02-11 20:13 采纳率: 100%
浏览 1041
已采纳

c语言栈的应用【括号匹配问题】

代码运行结果永远是正确,弄了好久没解决

#include<stdio.h>
#define MaxSize 50
typedef struct//顺序栈
{
    char data[MaxSize];
    int top;
}SqStack;
bool StackEmpty(SqStack &S)//判断栈空
{
    if(S.top==-1)
        return true;
    else
        return false;
}
bool Push(SqStack &S,char x)//压栈
{
    if(S.top==MaxSize)
        return false;
    S.data[++S.top]=x;
        return true;
}
bool Pop(SqStack &S,char x)//出栈
{
    if(S.top==-1)
        return false;
    x=S.data[S.top--];
        return true;
}
bool GetTop(SqStack &S,char x)//读取栈顶元素
{
    if(S.top==-1)
        return false;
    x=S.data[S.top];
        return true;
}
void InitStack(SqStack &S)//栈的初始化
{
    S.top=-1;
}

void main()
{
    int i,x;
    SqStack S;
    char a[20];
    InitStack(S);
    for(i=0;i<20;i++)
    {
        scanf("%c",&a[i]);
    }
    for(i=0;i<20;i++)
    {
        if(a[i]=='{'||a[i]=='['||a[i]=='(')
            Push(S,a[i]);
        if(a[i]=='}'||a[i]==']'||a[i]==')')
            if(StackEmpty(S))
            {
                printf("右括号比左括号多");
                return;
            }
            else
            {
                GetTop(S,x);
                if(x=='{'&&a[i]=='}'||x=='['&&a[i]==']'||x=='('&&a[i]==')')
                {
                    Pop(S,x);
                    Pop(S,x);
                    continue;
                }
                else
                {
                    printf("左右括号配对次序不正确");
                    return;
                }

            }
    }
    if(StackEmpty(S))
    {
        printf("左右括号配对正确");
        return;
    }

    else
    {
        printf("左括号比右括号多");
        return;
    }
}
  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-02-12 00:23
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集