C++括号匹配检测(用栈)

输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式。

 1 #include<iostream>
 2 #include<string>
 3 #include<stack>
 4 using namespace std;
 5 int main()
 6 {
 7     string str;
 8     getline(cin,str);
 9     stack<char>s;
10     for(int i=0;i<str.size();i++)
11     {
12         switch(str[i])
13         {
14         case '(':s.push(str[i]);
15             break;
16         case '[':s.push(str[i]);
17             break;
18         case ')':if(!s.empty()&&(s.top()=='('))
19             {
20                 s.pop();
21                 break;
22             }
23             else
24                 goto breakLoop;
25         case ']':if(!s.empty()&&(s.top()=='['))
26             {
27                 s.pop();
28                 break;
29             }
30             else
31                 goto breakLoop;
32         }
33 
34     }
35 
36     if(s.empty())
37         cout<<"括号匹配";
38     else
39         cout<<"不匹配";
40     return 0;
41 breakLoop:cout<<"不匹配";
42     return 0;
43 }

 

程序有不完美的地方,还望批评指正。

posted @ 2016-10-12 12:04  const_wss  阅读(1856)  评论(0编辑  收藏  举报