码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-06-07 12:59:44      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:space   问题   int   top   ++   ace   std   express   遇到   

 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 }

 

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

标签:space   问题   int   top   ++   ace   std   express   遇到   

原文地址:https://www.cnblogs.com/TYXmax/p/10987761.html

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