编程练习3--括号匹配

早早起来编出来了括号匹配的问题。

选择栈作为数据结构,如果是左括号就入栈,如果是右括号就检查栈顶是不是对应的左括号,是的话就出栈,不是的话就跳出,不匹配。

程序代码:

#include<iostream>
#include<stack>
using std::stack;
using std::string;
using std::cin;
using std::cout;
using std::endl;


bool bracket_match(string in)
{ size_t len=in.size();
size_t i(0);
stack<char> bracket;
while(i<len)
{ if(in[i]=='(')
{bracket.push(in[i]);i++;}
else if(in[i]=='[')
{bracket.push(in[i]);i++;}
else if(in[i]=='{')
{bracket.push(in[i]);i++;}


else if(!bracket.empty() && in[i]==')')
{if(bracket.top()=='(')
//if(bracket[top]=='(')
{bracket.pop();i++;}
else break;
}


else if(!bracket.empty() && in[i]==']')
{if(bracket.top()=='[')
{bracket.pop();i++;}
else break;
}


else if(!bracket.empty() && in[i]=='}')
{if(bracket.top()=='{')
{bracket.pop();i++;}
else break;
}
else i++;
}
if(bracket.empty()) return 1;
else return 0;
}
int main()
{ cout<<"put in the expression:"<<endl;
string ex;
cin>>ex;
if(bracket_match(ex)) cout<<"match succeeded!"<<endl;
else cout<<"no match!"<<endl;
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值