数据结构上机实践第五周项目3 - 括号的匹配
2017-12-25 08:17
239 查看
4000
括号的匹配
本次实践将用到顺序栈的算法库,点击此处参考。
本次实践要求:
假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。
例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。
提示:
(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者____,则可以得出不配对的结论。
(2)也可以设计一个返回值为布尔型的函数,参数为要配对的表达式,为一个字符串。
实现源代码如下:
#include <stdio.h>
#include "sqstack.h"
bool isMatch(char *st)
{
int d=1, i;
char c;
SqStack *s;
InitStack(s);
for(i=0; st[i]!='\0'&&d; i++)
{
switch(st[i])
{
case'(':
case'[':
case'{':
Push(s, st[i]);
break;
case')':
Pop(s, c);
if(c!='(') d=0;
c='0';
break;
case']':
Pop(s, c);
if(c!='[') d=0;
c='0';
break;
case'}':
Pop(s,c);
if(c!='{') d=0;
c='0';
break;
}
}
if(StackEmpty(s)&&d==1)
return true;
else
return false;
}
int main()
{
char st[50];
printf("请输入表达式:");
scanf("%s", st);
if(isMatch(st))
printf("配对正确!!\n");
else
printf("配对错误!!\n");
return 0;
}
运行结果如下:
括号的匹配
本次实践将用到顺序栈的算法库,点击此处参考。
本次实践要求:
假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。
例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。
提示:
(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者____,则可以得出不配对的结论。
(2)也可以设计一个返回值为布尔型的函数,参数为要配对的表达式,为一个字符串。
实现源代码如下:
#include <stdio.h>
#include "sqstack.h"
bool isMatch(char *st)
{
int d=1, i;
char c;
SqStack *s;
InitStack(s);
for(i=0; st[i]!='\0'&&d; i++)
{
switch(st[i])
{
case'(':
case'[':
case'{':
Push(s, st[i]);
break;
case')':
Pop(s, c);
if(c!='(') d=0;
c='0';
break;
case']':
Pop(s, c);
if(c!='[') d=0;
c='0';
break;
case'}':
Pop(s,c);
if(c!='{') d=0;
c='0';
break;
}
}
if(StackEmpty(s)&&d==1)
return true;
else
return false;
}
int main()
{
char st[50];
printf("请输入表达式:");
scanf("%s", st);
if(isMatch(st))
printf("配对正确!!\n");
else
printf("配对错误!!\n");
return 0;
}
运行结果如下:
相关文章推荐
- 第五周 项目3 数据结构实践——括号的匹配(栈)
- 数据结构上机实践第五周项目3 - 括号的匹配
- 第五周项目三C/C++数据结构实践——括号的匹配(栈)
- 第六周上机实践项目3——括号的匹配
- 第五周项目3-括号的匹配
- 第五周项目3-括号的匹配
- 第五周项目三 括号的匹配
- 第五周 项目3-括号的匹配
- 数据结构上机实践第五周项目2 - 建立链栈算法库
- 第六周上机实践—项目3—括号的匹配
- 第五周项目3--括号的匹配
- 第五周 项目3 --括号的匹配
- 第五周项目3 括号的匹配
- 第五周—项目3——括号的匹配
- 第五周项目3 括号的匹配(1)
- 第五周项目3-括号的匹配
- 第五周项目3-括号的匹配
- (第五周项目3)括号的匹配
- 第五周项目三—括号的匹配
- 第五周项目3-括号的匹配