括号的匹配
本次实践将用到顺序栈的算法库,点击此处参考。

本次实践要求:

假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 
例如,输入2+(3+4)*2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。

提示: 
(1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。若配对,继续,直到读完所有的符号,栈也正好为空。若在中间出现一个不配对的,或者____,则可以得出不配对的结论。 
(2)也可以设计一个返回值为布尔型的函数,参数为要配对的表达式,为一个字符串。

实现源代码如下:
//*Copyright  (c)2017,烟台大学计算机与控制工程学院*
//*All rights reservrd.*
//*文件名称 :main.cpp*
//*作者:田长航*
//*完成时间:2017年11月2日*
//*版本号:v1.0*
//*问题描述:测试函数*
//*输入描述:无*
//*程序输出:无*
#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 - 括号的匹配相关推荐

  1. 数据结构上机实践第五周项目2 - 建立链栈算法库

    建立链栈算法库 链式存储和顺序存储方式各有特点,各有缺点,上次实践建立了顺序栈的算法库,本次实践将建立链栈的算法库,用以应多更多多样化的问题.(编译环境:VC++6.0) 本次建立算法库需要建立多文件 ...

  2. 数据结构上机实践第五周项目1- 建立顺序栈算法库

    建立顺序栈算法库 本次实践将建立顺序栈的算法库,用以解决更多的工程问题,提供便利.(编译环境:VC++6.0) 建立算法库将会用到多文件组织工程的建立,本次实践不再细说,点击此处可参考. 建立好的工程 ...

  3. 数据结构上机实践第八周项目9-广义表算法库及应用

    广义表算法库及应用 为了丰富算法库,以应对各类工程的需要,本次实践将进行广义表算法库的建立以及应用. 项目要求一: 建立广义表算法库,包括:  ① 头文glist.h,定义数据类型,声明函数:  ② ...

  4. 数据结构上机实践第八周项目2- 建立链串的算法库

    建立链串的算法库 一般每一种数据结构都不会局限于在连续空间内的存取,那我们的串自然也不反常,本次实践将建立链串的算法库,应用于有需求的工程当中,提高程序的容错性. 本次实践依然会用到多文件组织工程的建 ...

  5. 数据结构上机实践第三周项目2 - 建设“顺序表”算法库

    [项目2 - 建设"顺序表"算法库]  领会"0207将算法变程序"部分建议的方法,建设自己的专业基础设施算法库.这一周,建的是顺序表的算法库.  算法库包括两 ...

  6. 数据结构上机实践第七周项目1 - 自建算法库——顺序环形队列

    自建算法库--顺序环形队列 本次实践将建立顺序环形队列的算法库,用于之后的工程中 实现源代码如下: 1.squeue.h /* copyright (t) 2017,烟台大学计算机学院 *All ri ...

  7. 数据结构上机实践第11周项目1 - 图基本算法库

    图基本算法库   本次实践将建立图的基本算法库,用以丰富算法库,灵活应对更多样的工程,所谓"技多不压身",算法亦如此.   本次实践将运用多文件组织工程的建立,点击此处参考.(编译 ...

  8. 数据结构上机实践第十周项目2 - 用二叉树求解代数表达式

    用二叉树求解代数表达式 本次实践所用到的二叉树算法库点击此处参考 编译环境(VC++6.0) 项目要求如下: 用二叉树来表示代数表达式,树的每一个分支节点代表一个运算符,每一个叶子节点代表一个运算数( ...

  9. 数据结构上机实践第八周项目8-稀疏矩阵的三元组表示的实现及应用

    稀疏矩阵的三元组表示的实现及应用 在现代社会中,在一个大量的人群集体中,总会有和某个人有相互之间的关系或者单向关系的,那我们的矩阵也是如此,稀疏矩阵压缩存储的方式,便可以让这种关系一目了然,巧妙应用. ...

最新文章

  1. 【数据结构】除去线性表中的重复数字
  2. java数组 相同颜色距离最远的_java-数组列表并找到具有相同编号的最长子...
  3. 计组—存储以及字、位扩展
  4. X264代码中一些参数的意义
  5. c语言实现socket转json,C++解析JSON进行网络传输--一个通过JSON方式的socket传输
  6. 爬虫学习一:HTTP、网页基础、requests、API、JS
  7. 【经典回顾】静态结构不能满足模型部署性能需求?微软提出动态卷积结构,Top-1准确率提高2.9%!(附复现代码)...
  8. 二进制和八进制表示法
  9. mysql 安装 权限_MySQL的安装、使用及权限管理
  10. java使用hashset_JAVA中Set集合--HashSet的使用
  11. golang 所有进程休眠_Golang基础--常见坑
  12. android嵌入式面试题,嵌入式软件面试题 经典笔试题(含答案)
  13. AndroidTestCase常用的两段配置
  14. hp RAID卡 命令行管理
  15. python顺序查找算法解释_顺序查找算法详解(包含C语言实现代码)
  16. 第三季-第7课-动态函数库设计
  17. JVM垃圾回收机制(一)
  18. 综合影响力模型InfG算法
  19. VS简明教程(VS安装、系统建议设置、软件设置、新建工程、发行、编译建议)、VS Code简明教程(安装、汉化、配置python环境、安装插件、新建并运行python程序)
  20. Mybatis复杂映射映射文件

热门文章

  1. C#基础5:字符串操作
  2. bzoj 3378: [Usaco2004 Open]MooFest 狂欢节(BIT)
  3. jQuery Mobile中导航栏navbar的data-*选项
  4. R中安装LightGBM(Windows 64位)
  5. DataGrid中間隔色的實現
  6. MySQL命令窗口下中文显示乱码的解决过程
  7. [转载]百分之百自动登录2345王牌技术员联盟源代码(delphi)
  8. 【WCF】WCF中的InstanceContext与ConcurrencyMode【转】
  9. 毕业2月有余,苏州同学腐败第二次大聚会
  10. [转载] python:numpy数学函数和逻辑函数