首页 > 其他 > 详细

括号匹配

时间:2014-04-01 10:45:04      阅读:494      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
#include<stdio.h>
#include<stack>
using namespace std;
stack <int> s;//定义一个堆栈
char str[101];//保存输入字符串
char ans[101];//保存输出字符串
int main()
{
    while(scanf("%s",str)!=EOF)//输入字符串
    {
        int i;
        for(i=0;str[i]!=0;i++)//从左到右遍历字符串
        {
            if(str[i]==()//若遇到(
            {
                s.push (i);///将其数组下标放入堆栈中
                ans[i]= ;//暂且对应字符串位置改为空格
            }
            else if(str[i]==))//若遇到)
            {
                if(s.empty()==false)//此时堆非空
                {
                    s.pop();//栈顶位置左括号与其匹配,从栈中弹出该已经匹配的(
                    ans[i]= ;//修改输出中该位置为空格
                }
                else
                    ans[i]=?;//若栈为空,则无法找到(与之匹配,修改输出位置为?
            }
            else ans[i]= ;//若为其他字符,与括号匹配无关,修改输出为空格
        }
        while(!s.empty())//字符串遍历完,栈中还有(无法匹配
        {
            ans[s.top()]=$;//修改输出位置
            s.pop();//弹出
        }
        ans[i]=0;//使输出形成字符串,在最后一个字符后添加一个空字符
        puts(str);//输出原字符串
        puts(ans);//输出答案字符串

    }
    return 0;
}
bubuko.com,布布扣

括号匹配,布布扣,bubuko.com

括号匹配

原文:http://www.cnblogs.com/Xilian/p/3637113.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!