栈的典型实例问题——括号匹配

Posted tyxmax

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈的典型实例问题——括号匹配相关的知识,希望对你有一定的参考价值。

 1 //每一个右括号将与最近遇到的那个未匹配的左括号相匹配!!!
 2 #include<iostream>
 3 #include<stack>
 4 #include<string.h>
 5 using namespace std;
 6 const int maxLength=100;//最大字符串长度
 7 void PrintMatchedPairs(char*expression)
 8     stack<int> s;
 9     int length=strlen(expression);
10     int j;
11     for(int i=0;i<length;i++)
12         if(expression[i]==() s.push(i);//位置进栈
13         else if(expression[i]==))//右括号
14             if(!s.empty())//栈不空
15                 j=s.top();//记录匹配的左括号位置 
16                 cout<<"左括号即第"<<j+1<<"个字符与右括号即第"<<i+1<<"个字符匹配成功"<<endl; 
17                 s.pop();//匹配成功,出栈
18              
19             else cout<<"没有与右括号即第"<<i+1<<"个字符匹配的左括号"<<endl; 
20          
21     
22     while(!s.empty())
23         j=s.top();
24         s.pop();
25         cout<<"没有与左括号即第"<<j+1<<"个符号相匹配的右括号"<<endl; 
26     
27 
28 int main()
29     char a[10];
30     for(int i=0;i<10;i++) cin>>a[i];
31     PrintMatchedPairs(a);
32     return 0;
33 

 

以上是关于栈的典型实例问题——括号匹配的主要内容,如果未能解决你的问题,请参考以下文章

括号匹配算法

栈的应用-判断括号匹配

栈的应用——逆序输出和括号匹配

LeetCode 20. Valid Parentheses

栈的应用之括号匹配的检验

栈3:括号匹配问题的7道题