标题:求助!ACM第二题,提交上去老是编译出错
只看楼主
平平小黄
Rank: 2
等 级:论坛游民
帖 子:15
专家分:28
注 册:2016-9-27
结帖率:50%
已结贴  问题点数:20 回复次数:9 
求助!ACM第二题,提交上去老是编译出错
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct stack
{
    char f;
    struct stack *next;
}stack;
stack *top=NULL;
void push(char A)
{
    stack *t=malloc(sizeof(stack));
    t->f=A;
    t->next=top;
    top=t;

}
int pop(char B)
{
    stack *temp=top;
    if(temp==NULL)return 0;
    if(B==')')
        {
            if(temp->f=='(')
            {top=top->next;return 1;}
            while(temp->next!=NULL)
            {

                if(temp->next->f=='(')
                {
                    temp->next=temp->next->next;
                    return 1;
                }
                temp=temp->next;
            }
            return 0;
        }
    if(B==']')
        {
            if(temp->f=='[')
            {top=top->next;return 1;}
            while(temp->next!=NULL)
            {
                if(temp->next->f=='[')
                {
                    temp->next=temp->next->next;
                    return 1;
                }
                temp=temp->next;
            }
            return 0;
        }
}
void pp()
{
    int n;
    char s[10000];
    gets(s);
    for(n=0;n<strlen(s);n++)
    {
        if(s[n]=='['||s[n]=='('){push(s[n]);}
        if(s[n]==']'||s[n]==')'){if(pop(s[n])==0){printf("No\n");top=NULL;return;}}

    }
    if(top==NULL)
    printf("Yes\n");
    else
    {printf("No\n");
    top=NULL;}
    return;
}
int main()
{
    int n,k;
    scanf("%d",&n);
    getchar();
    for(k=0;k<n;k++)
        pp();
        getchar();
    return 0;
}
搜索更多相关主题的帖子: stack next top NULL return 
2017-08-22 16:31
平平小黄
Rank: 2
等 级:论坛游民
帖 子:15
专家分:28
注 册:2016-9-27
得分:0 
2017-08-22 16:34
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:10 
题目。题目。题目。
重要的话要说四遍。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-08-22 16:54
平平小黄
Rank: 2
等 级:论坛游民
帖 子:15
专家分:28
注 册:2016-9-27
得分:0 
回复 3楼 renkejun1942
忘记了 ,尴尬。
2017-08-22 18:00
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
你的代码连示例输入都没过耶。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-08-22 19:22
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
你的代码最容易看到的错误是,好几个函数缺少参数。如果没有参数,应该 写 void


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-08-22 19:34
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
另外你的栈对内存的占有太大。一个字符就使用了 2 * sizeof( int )个字节。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-08-22 19:37
平平小黄
Rank: 2
等 级:论坛游民
帖 子:15
专家分:28
注 册:2016-9-27
得分:0 
回复 5楼 renkejun1942
题目中的[(])为什么不是配对的?

[此贴子已经被作者于2017-8-22 20:05编辑过]

2017-08-22 19:52
平平小黄
Rank: 2
等 级:论坛游民
帖 子:15
专家分:28
注 册:2016-9-27
得分:0 
回复 6楼 renkejun1942
gets() 和strlen()等函数都要加void 吗?
2017-08-22 19:54
lmlm1001
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:4
帖 子:107
专家分:550
注 册:2015-3-1
得分:10 
to 楼主:
        个人认为你的逻辑有些烦琐,代码量也过于冗余。
        建议你看看K&R的书,里面的有本题的答案。
2017-08-22 21:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480218-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.267328 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved