数据结构栈的应用--括号匹配(此代码如何优化)

发布于 2021-12-02 05:22:46 字数 6196 浏览 714 评论 11

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char a[10009];

//栈的结构体

struct Stack

{

    char data[10009];

    int top;                   //栈顶元素

};

struct Stack *s;

//初始化栈

void Init_Stack()

{

    s=(struct Stack *)malloc(sizeof(struct Stack));

    s->top=-1;

}

//入栈

void In_Stack(char c)

{

    s->top++;

    s->data[s->top]=c;

}

//取栈尾

void Out_Stack()

{

    s->top--;

}

int main()

{

    int b;

    while(~scanf("%s",a))

    {

        Init_Stack();

        In_Stack(a[0]);  //将第一个字符入栈

        for(b=1;b<strlen(a);b++)  //遍历剩下的字符

        {

            if((a[b]==')'&&s->data[s->top]=='(')||(a[b]==']'&&s->data[s->top]=='[')||(a[b]=='}'&&s->data[s->top]=='{')||(a[b]=='>'&&s->data[s->top]=='<'))  //当栈尾元素与被遍历到的元素匹配时,栈尾出栈

            {

                Out_Stack();

            }

            else

            {

                In_Stack(a[b]);  //否则,将该被遍历的元素入栈

            }

        }

        if(s->top==-1)   

            printf("YESn");    //当栈为空时,说明括号是匹配的

        else

            printf("NOn");  //否则。。。

    }

}

我的程序被判超时了,想问如何优化我的代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

左岸枫 2021-12-02 15:08:23

子函数使用宏有什么作用

私藏温柔 2021-12-02 15:08:18

不清楚你需求是什么,子函数可以使用宏。

//初始化栈
#define Init_Stack()
do
{
    s=(struct Stack *)malloc(sizeof(struct Stack));
memset(s,0,sizeof(struct Stack));
    s->top=-1;
}while(0)
//入栈
#define In_Stack(c) s->data[++s->top]=(c)

//取栈尾
#define Out_Stack() s->top--

囚你心 2021-12-02 15:08:01

学校的测评网站

爱你是孤单的心事 2021-12-02 15:07:57

你怎么测的?

丢了幸福的猪 2021-12-02 15:07:46

200ms之内,你帮我看看主函数里面for循环里面的内容,看看可以怎么优化?

彩扇题诗 2021-12-02 15:07:08

把压栈,出栈的函数都改成主处理里的处理呢?

巡山小妖精 2021-12-02 15:04:15

回复
还是不行,会不会是我在if这里判断了太多次,因为最多可以有10000个括号,当括号右10000个的时候,可能就超时了

孤独患者 2021-12-02 15:02:26

回复
在算法不能优化的时候,就精简指令吧,能看到编译成汇编的情况吧,尽可能地减少指令,这才能快的。

蓝颜夕 2021-12-02 14:35:59

多少时间算不超?没看你的逻辑,尽量减少函数和函数的调用,应该会省出些时间的。

高跟鞋的旋律 2021-12-02 12:09:53

我把你的代码提交了,也是超时,我的代码应该没错吧,只是算法过于繁琐

感情旳空白 2021-12-02 10:09:26

你好,你的代码也是超时了,我只是不知道该如何优化代码,算法应该是没有问题的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文