
#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;
}
◆◆
評論讀取中....
請登入後再發表評論!
◆◆
修改失敗,請稍後嘗試