| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 332 人关注过本帖
标题:请帮我看看括号匹配,那里有问题,执行时老是错误终止。谢谢!
只看楼主 加入收藏
阳光的安慰
Rank: 1
等 级:禁止访问
帖 子:12
专家分:0
注 册:2013-12-24
结帖率:20%
收藏
已结贴  问题点数:5 回复次数:4 
请帮我看看括号匹配,那里有问题,执行时老是错误终止。谢谢!
程序代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct{
char *base,*top;
    int size;
}stack2;

int init_stack2(stack2 &s);

int push2(stack2 &s,int e);

int pop2(stack2 &s);

int sfull2(stack2 s);

int empty2(stack2 s);

int gettop2(stack2 s,char &e);

void get(char *str)
{gets(str);}
void match(char*str,stack2 &s)
{while(*str)
{switch(*str)
{case'(':
push2(s,*str);break;
case')':
    if(s.top==s.base)
    {printf("右括号多余\n");return;
    }
    pop2(s);break;}
    str++;}
if(s.top==s.base)
{printf("匹配\n");return;}
else{printf("不匹配\n");return;}
}
void main()
{stack2 s;
char *str;
init_stack2(s);
printf("shuru\n");
get(str);
match(str,s);
}

2014-01-09 09:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
貌似没有为指针分配空间吧

另外  函数也不是装饰品  不是越多越好的

DO IT YOURSELF !
2014-01-09 09:14
阳光的安慰
Rank: 1
等 级:禁止访问
帖 子:12
专家分:0
注 册:2013-12-24
收藏
得分:0 
回复 2楼 wp231957
我一着急,忘记打栈的进栈出栈,初始化的内容了,我采用的是顺序栈

我是王黑黑。来捣乱的~~~~(>_<)~~~~
2014-01-09 09:21
阳光的安慰
Rank: 1
等 级:禁止访问
帖 子:12
专家分:0
注 册:2013-12-24
收藏
得分:0 
回复 2楼 wp231957
好了,谢谢!

我是王黑黑。来捣乱的~~~~(>_<)~~~~
2014-01-09 09:24
dongshimou
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:44
专家分:152
注 册:2014-1-8
收藏
得分:3 
不用这么麻烦。直接指针当栈使。
程序代码:
#include<stdio.h>
#include<string.h>
const int maxn=10001;
int main()
{
    char str[maxn],s[maxn];
    int i,j;
    while(scanf("%s",str)!=EOF)
    {
        int ok=1;
        for(i=0,j=0; i<strlen(str); i++)
        {
            if(str[i]=='('||str[i]=='[')
                s[j++]=str[i];
            else
            {
                if(s[j-1]=='('&&str[i]==')')
                    j--;
                else if(s[j-1]=='['&&str[i]==']')
                    j--;
                else
                {
                    printf("No\n");
                    ok=0;
                    break;
                }
            }
        }
        if(j==0&&ok)printf("Yes\n");
        else if(ok)printf("No\n");
    }
}


这儿只有() 和 [] 。如果要{} 或者 <> 多添加循环就可。
2014-01-09 16:26
快速回复:请帮我看看括号匹配,那里有问题,执行时老是错误终止。谢谢!
数据加载中...
 
   



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

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