码迷,mamicode.com
首页 > 编程语言 > 详细

括号匹配算法(C++语法)

时间:2019-10-20 11:17:26      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:编程   top   不执行   pre   tin   turn   括号   mat   else   

这个代码是我在学习编程风格之前写的代码,改变之后的我后续会整体发上去。

//括号匹配
#include<iostream>
#include<stack>
using namespace std;
int iskh(char ch)
{
    if (ch == ( || ch == [ || ch == {)return 1;
    else if (ch == ) || ch == ] || ch == })return -1;
    else return 0;
}

int matching()
{
    stack<char> S;
    char ch,temp;
    int i;
    while ((ch = getchar()) != \n)
    {
        //判断是否为括号
        i = iskh(ch);
        if (i > 0)//是左括号,入栈
            S.push( ch);
        else if (i < 0)//是右括号,取栈顶判断是否匹配
        {
            if (S.empty())
                return 0;
            temp = S.top();
            if ((temp == ( && ch == ))|| (temp == [ && ch == ])|| 
            (temp == { && ch == }))//匹配成功
                
                S.pop();        
            else//匹配失败
                return 0;
        }
        else//不是括号,不执行任何操作,继续往下遍历
            continue;
    }
    return 1;
}

int main(){
    int i = matching();
    if (i) 
            cout << "匹配成功!" << endl;
    else 
            cout<<"匹配失败!"<<endl;
    return 0;
}

        

 

括号匹配算法(C++语法)

标签:编程   top   不执行   pre   tin   turn   括号   mat   else   

原文地址:https://www.cnblogs.com/lyf98/p/11706758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!