第五周项目3括号的匹配

来源:互联网 发布:人工智能的应用领域 编辑:程序博客网 时间:2024/06/07 15:49
/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:第五周项目3.cpp
作 者:程德泉
完成日期:2016年9月29日
版 本 号:v1.0


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

*/


代码:

  1. #include "sqstack.h"  
  2.   
  3. bool isMatch(char *st)  
  4. {  
  5.     int d=1, i;  
  6.     char c;  
  7.     SqStack *s;  
  8.     InitStack(s);  
  9.     for(i=0; st[i]!='\0'&&d; i++)  
  10.     {  
  11.         switch(st[i])  
  12.         {  
  13.         case'(':  
  14.         case'[':  
  15.         case'{':  
  16.             Push(s, st[i]);  
  17.             break;  
  18.         case')':  
  19.             Pop(s, c);  
  20.             if(c!='(') d=0;  
  21.             break;  
  22.         case']':  
  23.             Pop(s, c);  
  24.             if(c!='[') d=0;  
  25.             break;  
  26.         case'}':  
  27.             Pop(s,c);  
  28.             if(c!='{') d=0;  
  29.             break;  
  30.         }  
  31.     }  
  32.     if(StackEmpty(s)&&d==1)  
  33.         return true;  
  34.     else  
  35.         return false;  
  36. }  
  37.   
  38. int main()  
  39. {  
  40.   
  41.     char st[50];  
  42.     printf("请输入表达式:");  
  43.     scanf("%s", st);  
  44.     if(isMatch(st))  
  45.         printf("配对正确!!\n");  
  46.     else  
  47.         printf("配对错误!!\n");  
  48.     return 0;  
  49. }  
运行结果:



知识点总结:

栈的基本应用。

学习心得:

将括号当成一般字符处理。


0 0