假设一个算术表达式中包含圆括号、方括号和花括号三种类型的括号,编写一个算法判别表达式中的括号是否配对,以字符“\0”作为算术表达式的结束符。
#include <iostream>
#include<stack>
using namespace std;
bool branketcheck(char * t)
{
stack<char> record;
char* pointer=t;
while(*pointer!='\0')
{
if(*pointer=='('||*pointer=='['||*pointer=='{'){
record.push(*pointer);
}else{
if(*pointer==')'&&record.top()!='(') return 0;
else if(*pointer==']'&&record.top()!='[') return 0;
else if(*pointer=='}'&&record.top()!='{') return 0;
record.pop();
}
pointer=pointer+1;
}
return record.empty();
}
int main() {
char * t1={"{{(())}[[()]]}[[()]]\0"};//合法
if(branketcheck(t1)) printf("legal\n");
else printf("illegal\n");
char * t2={"{{(())}[[()]]}[[()]\0"};//非法
if(branketcheck(t2)) printf("legal\n");
else printf("illegal\n");
return 0;
}