zoukankan      html  css  js  c++  java
  • 利用栈解决符号匹配问题

    看到《数据结构》书中,有提到这个栈应用,就自己写个C++实现下~~熟悉下
    #include <iostream>
    using namespace std;
    #include <stack>
    #include <string.h>
    /*
    用栈实现,判断(),[]在等式中是否配对正确
    几种特殊情况要考虑到,
    1.当没有与之配对的栈,则是匹配错误例如:()[]]
    2.当退出时候,需要判断栈是否为空,是否都有判断过;例如[()
    author : cheng 2013.6.9
    */
    bool is_match(char *s)
    {
        int i;
        char temp;
        stack<char>m_stack;
        for(i =0; s[i]!=0;i++)
        {
            if(s[i]=='('|| s[i]== '[')
                m_stack.push(s[i]);
            else if(s[i]==')' || s[i] == ']')
            {
                if(m_stack.size()==0) //当没有与之配对的栈,则是匹配错误()[]]
                    return false;
                temp = m_stack.top();
                switch(temp)
                {
                case '(': 
                    {
                        if(s[i]==')')
                        {
                            m_stack.pop();
                            break;
                        }
                        else
                            return false;
                    }
                case '[': 
                    {
                        if(s[i] ==']')
                        {
                            m_stack.pop();
                            break;
                        }
                       else 
                           return false;
                    }
                }
                    
            }
            else //other char to skip it
                continue;
        }
        if(m_stack.size()==0) //check if all symbol match already 例如:[()
            return true;
        else
            return false;
    }
    int main()
    {
        char src[1000];
        while(scanf("%s",src)!=EOF)
        {
            if(is_match(src) == 1)
                cout<<"match OK!"<<endl;
            else
                cout<<"Mis match,Please check it!"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    第1次系统综合实践作业
    个人作业——软件工程实践总结
    个人作业——软件评测
    2019软件工程第五次作业
    预习非数值数据的编码方式
    预习原码补码作业
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
  • 原文地址:https://www.cnblogs.com/cheng07045406/p/3129152.html
Copyright © 2011-2022 走看看