【项目3 - 括号的匹配】
/*
* Copyright (C) 2017, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称 : hhh.cpp
* 作 者 : 张雨萌
* 完成日期 : 2017年9月28日
* 版 本 号 : v1.0
问题描述:假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。
输入及输出描述:例如,输入2+(3+4)*[2+{[3]}]-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。
程序及代码:
#include "hhh.h"
bool isMatch(char * kh)
{
int i,d=1; //判断是否成功的参考数
char c;
SqStack *s;
InitStack(s); //初始化栈
for(i=0;kh[i]!='\0' &&d;i++)
{
if(kh[i]=='('||kh[i]=='['||kh[i]=='{')
Push(s,kh[i]);
if(kh[i]==')')
{
Pop(s,c);
if(c!='(')
d=0;
}
if(kh[i]==']')
{
Pop(s,c);
if(c!='[')
d=0;
}
if(kh[i]=='}')
{
Pop(s,c);
if(c!='{')
d=0;
}
}
if(StackEmpty(s)&&d==1)
return true;
else
return false;
}
int main()
{
char kh[50];
printf("请输入表达式:");
scanf("%s", kh);
if(isMatch(kh))
printf("配对正确!!\n");
else
printf("配对错误!!\n");
return 0;
}
运行结果: