• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > C++匹配[{}]出错

C++匹配[{}]出错

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了c++括号匹配,安装c++2005出错,c++出错,c++,c++视频课程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:C++匹配[{}]出错
描述:

问题很简单:

就是很简单的匹配‘[{()}]'是否匹配,我就试着使用栈的方式解决,可问题很大。代码如下,自己还属于菜鸟,希望大神不要嘲笑了。

#include<iostream>
#include<stack>

using namespace std;
bool seqIsValid(const char*);
char seqRight(char);

bool seqIsValid(const char *str){
    stack<char> strStack;

    for(;*str != '\0';str++){
        if(!strStack.top()){
            if(seqRight(strStack.top()) != *str){
                strStack.push(*str);
            }else{
                strStack.pop();
            }
        }else{
            strStack.push(*str);
        }
    }

    if(!strStack.top()){
        return false;
    }
    return true;
}

char seqRight(char ch){
    switch(ch){
        case '[':
            return ']';
        case '{':
            return '}';
        case '(':
            return ')';
        default:
            return '\0';
    }
}

int main(){
    const char* test = "[{()}]";

    if(seqIsValid(test)){
        cout<<"seq is valid;"<<endl;
    }else{
        cout<<"is not valid"<<endl;
    }
}

运行结果:

?  tmp  ./test
[1]    31495 segmentation fault  ./test

搞定:

#include<iostream>
#include<stack>

using namespace std;
bool seqIsValid(const char*);
char seqRight(char);

bool seqIsValid(const char *str){
    stack<char> strStack;

    for(;*str != '\0';str++){
        if(!strStack.empty()){
            if(seqRight(strStack.top()) != *str){
                strStack.push(*str);
            }else{
                strStack.pop();
            }
        }else{
            strStack.push(*str);
        }
    }

    if(!strStack.empty()){
        return false;
    }
    return true;
}

char seqRight(char ch){
    switch(ch){
        case '[':
            return ']';
        case '{':
            return '}';
        case '(':
            return ')';
        default:
            return '\0';
    }
}

int main(){
    const char* test = "[{()}]";

    if(seqIsValid(test)){
        cout<<"seq is valid;"<<endl;
    }else{
        cout<<"is not valid"<<endl;
    }
}


解决方案1:

if (!strStack.empty())


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++匹配[{}]出错

相关文章

  • 2017-06-07 请问创建空间有数量上限吗
  • 2017-06-07 web消息通知中,如何用轮询redis来代替轮询数据库?
  • 2017-06-07 linux命令行和shell脚本编程宝典(shell)命令行显示和不显示输出
  • 2017-06-07 如何控制css,js的过期时间
  • 2017-06-07 (python)知乎现在怎么抓登入的那些信息的
  • 2017-06-07 (python)一组脉冲数据,求脉冲时间。
  • 2017-06-07 laravelLaravel无限分类(树形)拖动
  • 2017-06-07 joinsetDiscriminatortrue是什么意思不懂
  • 2017-06-07 (python)django的mongoengine如何实现链接的权限认证
  • 2017-06-07 (python)是否elif后面的语句执行了,这个循环就跳出了,再后面的语句就不执行了?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 页面生成一个表格
    • (ruby)s3amazonawscom是不是被墙了?gem怎么下不到数据?
    • 七牛音频转码,既然上传的回调转码的回调是分开的,服务器如何处理这条记录呢?
    • 网页sessionStorage的内容,python如何获取?
    • 安装好Vagrantlarval/homestead之后,启动虚拟机无法indexphp
    • java提示:可能损失经度
    • JS直传CallbackFetchKey=1时invalidputpolicyencoding
    • 使用Python的SocketServer,服务器端无法接受客户端发送的消息
    • ethhdr、iphdr、tcphdr、udphdr等结构体,以及在很多C程序中,命名结构体时都有hdr,hdr是什么意思呢?
    • go的json解析问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有