
#include "iostream"
using namespace std;
#define MAX 20//表达式的最大长度
int top=1;//栈的顶部指针
void Push(char *&stack,char temp)//压栈操作
{
stack[top]=temp;
top++;
}
void Pop(char *&stack,char &temp)//出栈操作
{
top--;
temp=stack[top];
}
int JudgeMatch(char *&stack,char *BDS)//判断括号匹配函数,是则返回1,不是则返回0
{
int len=strlen(BDS);//表达式长度
char temp='0';//作出栈临时储存变量
for (int i=0;i
{
if(BDS[i]=='('||BDS[i]==')')
{
int flag=0;
if(BDS[i]=='(') flag=1;
switch(flag)//注意表达式括号的各种情况
{
case 1: {Push(stack,BDS[i]);break;}
case 0:
{
Pop(stack,temp);
if(temp=='(')
{
Pop(stack,temp);
if(temp=='0') return 1;
else
Push(stack,temp);
}
else return 0;
}
}
}
}
Pop(stack,temp);
if(temp=='(') return 0;
return 1;
}
int main()
{
FILE *fp;
if (fp=fopen("input4.txt","r"))
{
int num=0;
fscanf(fp,"%d",&num);
for (int i=0;i
{
char Bds[MAX];
fscanf(fp,"%s",Bds);
char *p=Bds;
char stack[MAX]={'0'};
char *sp=stack;
int JVar=JudgeMatch(sp,p);
cout<
}
fclose(fp);
}
return 0;
}
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试