博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构 栈的应用
阅读量:6305 次
发布时间:2019-06-22

本文共 1281 字,大约阅读时间需要 4 分钟。

题目描述

请写一个程序,判断给定表达式中的括号是否匹配,表达式中的合法括号为”(“, “)”, “[", "]“, “{“, ”}”,这三个括号可以按照任意的次序嵌套使用。

输入

有多个表达式,输入数据的第一行是表达式的数目,每个表达式占一行。

输出

对每个表达式,若其中的括号是匹配的,则输出”yes”,否则输出”no”。

样例输入

4
[(d+f)*{}]
[(2+3))
()}
[4(6]7)9

样例输出

yes
no
no
no
解题思路:
    加入括号一一配对,则()[] {}左右符号一一对应,也就是说在字符串中间必有一左一右括号相连并且两者对应,说先应该去掉除括号以外的其他字符,然后运用栈依次将左括号存入栈中,遇到右括号时间与栈底符号比较,匹配时间栈的标记元素减一。直到最后若栈的标记元素等零,说明栈中的括号一一匹配。
 
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct stu{
char s[1010];
int head;
int tail;
}st;
int funz(char s)
{
if(s=='(')
return 1;
else if(s=='[')
 return 2;
else if(s=='{')
 return 3;
else
 return -1;
}
int funy(char s)
{
if(s==')')
return 1;
    else if(s==']')
    return 2;
    else if(s=='}')
     return 3;
     else
     return 0;
}
int main()
{
int i,m,n;
st s1;
char s0;
char s[1010];
scanf("%d",&m);
getchar();
while(m--)
{
  s1.head=s1.tail=0;
  i=0;
  while(scanf("%c",&s0),s0!='\n')
   if(s0=='('||s0==')'||s0=='['||s0==']'||s0=='{'||s0=='}')
     s[i++]=s0;
     s[i]='\0';
     if(strlen(s)%2!=0)
     {
      printf("no\n");
      continue;
 }
       for(i=0;s[i]!='\0';i++)
       {
         if(s[i]=='('||s[i]=='['||s[i]=='{')
            s1.s[s1.tail++]=s[i];
         else if(s[i]==')'||s[i]==']'||s[i]=='}')
             {
              if(funz(s1.s[s1.tail-1])==funy(s[i]))
                s1.tail--;
}
  }
  if(s1.tail==0)
   printf("yes\n");
  else
   printf("no\n");
}
return 0;
}

转载于:https://www.cnblogs.com/weidongya/p/7219798.html

你可能感兴趣的文章
Box2D自定义重力
查看>>
chpasswd
查看>>
mysqldump --single-transaction 和--lock-tables参数详解
查看>>
android 数据库_sql语句总结
查看>>
python购物车
查看>>
解决python2和python3的pip冲突
查看>>
面试/编程
查看>>
linux每日命令(16):head命令
查看>>
公司内部分享【富有成效的每日站会】总结
查看>>
打造一个上传图片到图床利器的插件(Mac版 开源)
查看>>
iOS横竖屏
查看>>
thinkphp判断更新是否成功
查看>>
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>