问题描述
一个算术表达式中的括号只有小括号。编写算法,判断一个表达式中的括号是否正确配对,表达式已经存入字符数组exp[]中,表达式的字符个数为n。
思路
在解决问题的过程中出现了一个子问题,但凭现有条件不能解决它,需要记下,等待以后出现可以解决它的条件后再返回解决,这种问题可以用栈来解决,栈具有记忆的功能,这是栈的FILO特性所延伸出来的一种特性。
源代码
#include<iostream>
#define maxSize 50
#include <stdio.h>
using namespace std;
int match(char exp[],int n)
{
char stack[maxSize];
int top=-1;
for(int i=0;i<n;++i){
if(exp[i]=='(')
stack[++top]='(';
if(exp[i]==')'){
if(top==-1)
return 0;
else
--top;
}
}
if(top==-1)
return 1;
else
return 0;
}
int main()
{
int n;
cin>>n;
char exp1[n];
for(int i=0;i<n;++i){
cin>>exp1[i];
}
cout<<match(exp1,n);
return 0;
}
执行结果
来源:CSDN
作者:晁小粉
链接:https://blog.csdn.net/m0_43453569/article/details/103987450