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