第六周 项目三 括号的匹配
2015-12-14 16:26
176 查看
/*
*Copyright (c)2015, 烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:Graph.cpp
*作 者:苏凯祺
*完成日期:2014年12月14号
*版 本 号:v1.0
*问题描述:
假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*[2+{[3]}]-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。
提示:(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者_____________,则可以得出不配对的结论。(2)也可以设计一个返回值为布尔型的函数,参数为要配对的表达式,为一个字符串。
*头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。
*/
#include <stdio.h>
#include "sqstack.h"
int main()
{
char c;
char st[50];
int d=1, i;
SqStack *s;
InitStack(s);
printf("请输入表达式:");
scanf("%s", st);
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;
break;
case']':
Pop(s, c);
if(c!='[') d=0;
break;
case'}':
Pop(s,c);
if(c!='{') d=0;
break;
}
}
if(StackEmpty(s)&&d==1)
printf("配对正确!!\n");
else
printf("配对错误!!\n");
return 0;
}
运行结果:
*Copyright (c)2015, 烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:Graph.cpp
*作 者:苏凯祺
*完成日期:2014年12月14号
*版 本 号:v1.0
*问题描述:
假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*[2+{[3]}]-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。
提示:(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者_____________,则可以得出不配对的结论。(2)也可以设计一个返回值为布尔型的函数,参数为要配对的表达式,为一个字符串。
*头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。
*/
#include <stdio.h>
#include "sqstack.h"
int main()
{
char c;
char st[50];
int d=1, i;
SqStack *s;
InitStack(s);
printf("请输入表达式:");
scanf("%s", st);
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;
break;
case']':
Pop(s, c);
if(c!='[') d=0;
break;
case'}':
Pop(s,c);
if(c!='{') d=0;
break;
}
}
if(StackEmpty(s)&&d==1)
printf("配对正确!!\n");
else
printf("配对错误!!\n");
return 0;
}
运行结果:
相关文章推荐
- 第十四周项目一:验证折半查找算法
- 第15周项目1 验证算法
- 第16周实践项目-选择排序之直接选择排序
- 整数的二进制表示中1的个数
- quake3 code 源代码 编译调试。保证通过。
- 实现WordPress主题侧边栏切换功能的PHP脚本详解
- 7 Steps for becoming Deep Learning Expert
- 第14周项目2二叉排序树中查找的路径
- SQLITE 在 ANDROID 中的详细使用
- 数据科学家必知必会的7款Python工具,你会几个?
- 十六周 项目1直接插入排序
- 第十四周项目3 二叉排序树
- 第十六周项目1(3)-冒泡排序
- JAVA 排序方法整理
- Navicat 链接虚拟机MySQL失败(GRANT ALL PRIVILEGES)
- C++ ERROR redefinition of ‘class ***’
- ios Core Data
- ppDelegate的相关介绍
- 观 万物理论 有感
- 从头开始写框架(二):孕育框架的种子_中