没有去实现栈,使用c++中stl提供的stack来操作。
算法描述
if(遇到左括号)
{ 压栈
}
if(遇到左括号)
{ 弹栈
栈为空,弹栈失败 not match
}
if(stack.size()==0) matchelse
not match;
#include<iostream>
#include<stack>
using namespace std;
stack<char> s;
int flag=1;
int endpos=0;
void pop_stack(int i){
cout<<"enter pop i="<<i<<endl;
if(s.empty()){
flag= -1;
}
if(!s.empty())
{
cout<<"pop top"<<s.top()<<endl;
s.pop();
}
}
int main(){
char ch[]="(())(()))";
//
int length=strlen(ch);
cout<<"char length is "<<length;
// char *a=ch;
int i=0;
for(int i=0;i<length;i++)
{
cout<<"ch ["<<i<<"]="<<ch[i]<<endl;
if(ch[i]=='('){
s.push(ch[i]);}
else
{ pop_stack(i);
if(flag==-1){
endpos=i;
break;
}
}
}
if(flag==1&&s.size()==0){
cout<<"match";
}else{
cout<<"not match wrong ="<<endpos;
}
system("pause");
return 0;
}