| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6138 人关注过本帖
标题:[讨论]括号匹配的检验
取消只看楼主 加入收藏
love_hcy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
收藏
 问题点数:0 回复次数:3 
[讨论]括号匹配的检验
看到一道堆栈的题:
括号匹配的检验。
其中有个思想:
期待的急迫程度。
属实有些不理解。

这个题的意思应该是能检验出 小括号 和 中括号 的顺序。
比如[([][])]为正确格式,[(])、(( )])为不正确的格式。

自己写了个,但是只能实现一种括号的检验。

高手帮帮忙。期待的急迫程度应该怎么实现呢?
或者如何实现多种括号匹配的检验。非常感谢。^^
搜索更多相关主题的帖子: 括号 检验 
2007-02-12 20:50
love_hcy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
收藏
得分:0 

谢谢三楼的班竹。不过你好像理解错了。
这个题是检验括号的匹配。不过后来我想通了。
自己写了下算法。不知道还有没有什么遗漏的。

不匹配的情况:
   1.来的右括弧非是所"期待"的;
  2.来的是"不速之客";
  3.直到结束,也没有到来所"期待"的。

这三种情况对应到栈的操作即为:
  1.和栈顶的左括弧不相匹配;
  2.栈中并没有左括弧等在哪里;
  3.栈中还有左括弧没有等到和它相匹配的右括弧。

void Chack(){
    //没有考虑垃圾数据的输入,约定只有()[ ]两种括号输入
    InitStack(S);        //构造空栈S
    ch=getchar();        //接受第一个字符
    while(ch!=='\n')
    {
        switch(ch){
        case '( ':
        case '[ ': Push(s,ch); break;            //若为左括号,入栈
        case ') ': if(StackEmpty(S))
                       {
                        pus("匹配不通过");
                        exit(1);
                        }                        //若第一个字符即为右括号,则一定不匹配
                   else{
                        GetTop(S,e);
                        if(e=='( ') Pop(S,e);    //若匹配成功,删除栈顶元素
                        break;
                        }
        case '] ': if(StackEmpty(S)){pus("匹配不通过");exit(1);}
                   else{
                        GetTop(S,e);
                        if(e=='[ ') Pop(S,e);    //若匹配成功,删除栈顶元素
                        break;
                        }
        }
        ch=getchar();
    }
    if(StackEmpty(S)) puts("匹配通过");          //入栈出栈时都应为空,则匹配通过
    else puts("匹配不通过");
}


[此贴子已经被作者于2007-2-13 20:57:03编辑过]


原来时间真的会不够。原來一切真的都已經來不及。
2007-02-13 10:21
love_hcy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
收藏
得分:0 
应该是这个样子:
while(ch!=='\n')

原来时间真的会不够。原來一切真的都已經來不及。
2007-02-13 17:30
love_hcy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
收藏
得分:0 

那这个循环条件该怎么写?


原来时间真的会不够。原來一切真的都已經來不及。
2007-02-13 20:52
快速回复:[讨论]括号匹配的检验
数据加载中...
 
   



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

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