离 亿玄 2021-08-22 17:08 采纳率: 66.7%
浏览 429
已结题

运行出现Process returned -1073740940 (0xC0000374)

表达式的括号匹配,,在运行的时候出现Process returned -1073740940 (0xC0000374),哪里有问题,如何解决

#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
    char data;
    struct Node *next;
}Node;
typedef struct stack
{
    Node *top;
    Node *bottom;
}stack;
void InitStack (stack *s)
{
    s->bottom=(Node*)malloc(sizeof(Node));
    s->bottom=s->top;
    s->bottom->next=NULL;
}
void Push (stack *s,char c)
{
    Node *p;
    p=(Node*)malloc(sizeof(Node));
    p->data=c;
    p->next=s->top->next;
    s->top->next=p;
}
void Pop (stack *s)
{
    Node *p;
    p=s->top;
    s->top=p->next;
    free (p);
}
int Empty(stack *s)
{
    return (s->top==NULL);
}
void BracketMatch (stack *s,char str[])
{
    char ch;
    for (int i=0;str[i]!='\0';i++)
    {
        switch (str[i])
        {
            case '(':
            case '[':
            case '{':
                Push (s,str[i]);
                break;
            case ')':
            case ']':
            case '}':
                if (Empty(s))
                {
                    printf("no");
                    return ;
                }
                else
                {
                    ch=s->top->data;
                    if (ch==str[i])
                    {
                        Pop(s);
                    }
                    else
                    {
                        printf("no");
                        return ;
                    }
                }
        }
    }
}
int main()
{
    stack *s;
    s=(stack*)malloc(sizeof(stack));
    char str[100];
    gets(str);
    InitStack(s);
    BracketMatch(s,str);
    if (Empty(s))
    {
        printf("yes");
    }
    else
    {
        printf("no");
    }
    return 0;
}


  • 写回答

2条回答 默认 最新

  • Pliosauroidea 2021-08-22 17:15
    关注

    括号匹配不是直接用栈就能做..你这太长了而且跑起来不报错,不想看.JPG
    改了一下,起码现在有输出了,剩下的我没看

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct Node
    {
        char data;
        struct Node *next;
    } Node;
    typedef struct stack
    {
        Node *top;
        Node *bottom;
    } stack;
    void InitStack(stack *s)
    {
        s->bottom = (Node *)malloc(sizeof(Node));
        s->top = s->bottom; //写反了,你写的是bottom=top,把bottom覆盖掉了
        s->bottom->next = NULL;
    }
    void Push(stack *s, char c)
    {
        Node *p;
        p = (Node *)malloc(sizeof(Node));
        p->data = c;
        p->next = s->top->next;
        s->top->next = p;
    }
    void Pop(stack *s)
    {
        Node *p;
        p = s->top;
        s->top = p->next;
        free(p);
    }
    int Empty(stack *s)
    {
        return (s->top == NULL);
    }
    void BracketMatch(stack *s, char str[])
    {
        char ch;
        for (int i = 0; str[i] != '\0'; i++)
        {
            switch (str[i])
            {
            case '(':
            case '[':
            case '{':
                Push(s, str[i]);
                break;
            case ')':
            case ']':
            case '}':
                if (Empty(s))
                {
                    printf("no");
                    return;
                }
                else
                {
                    ch = s->top->data;
                    if (ch == str[i])
                    {
                        Pop(s);
                    }
                    else
                    {
                        printf("no");
                        return;
                    }
                }
            }
        }
    }
    int main()
    {
        stack *s;
        s = (stack *)malloc(sizeof(stack));
        char str[100];
        gets(str);
        InitStack(s);
        BracketMatch(s, str);
        if (Empty(s))
        {
            printf("yes");
        }
        else
        {
            printf("no");
        }
        return 0;
    }
    

    有帮助望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月30日
  • 已采纳回答 8月22日
  • 创建了问题 8月22日

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行