Problem C: 括号匹配(栈和队列)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 76  Solved: 18
[Submit][Status][Web Board]

Description

假设一个表达式中只允许包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用如:(…[…{… …[…]…}…[…]…(…)…]…)。设计一个算法,判断表达式中的括号是否正确配对。输出结果为Yes或者No。

顺序栈的定义为

typedef struct
{
char date[Max];
int top;
} Spstack;
需编写的算法为int solve(char *a,Spstack *st);
可使用的函数有:
1、bool Pop(Spstack *&s,char &e);    //出栈
2、bool GetTop(Spstack *s,char &e); //取栈顶元素
3、bool Push(Spstack *&s,char e);     //入栈
4、bool StackEmpty(Spstack *s);        //判断是否为空栈
括号匹配正确返回1,否则返回0。其中a为该表达式,st为一个空栈。

Input

{[][]()([])}[]()

Output

Yes

Sample Input

{[()[]][}]

Sample Output

No

HINT

1、注意括号匹配问题

2、只需提交你所编写的算法

#include <stdio.h>
#define Max 105
typedef struct
{ char date[Max]; int top;
} Spstack;
void InitStack(Spstack *&s)
{ s= new Spstack; s->top=-1;
}
bool StackEmpty(Spstack *s)
{ return(s->top==-1);
}
bool Push(Spstack *&s,char e)
{ if(s->top==Max-1)return false; s->top++; s->date[s->top]=e; return true;
}
bool GetTop(Spstack *s,char &e)
{ if(s->top==-1)return false; e=s->date[s->top]; return true;
}
bool Pop(Spstack *&s,char &e)
{ if(s->top==-1)return false; e=s->date[s->top]; s->top--; return true;
}
void DestroyStack(Spstack * &s)
{ delete(s);
}int solve(char *a,Spstack *st)
{ int i=0,match=1; char e; while(a[i]!='\0'&&match) { if(a[i]=='('||a[i]=='{'||a[i]=='[') Push(st,a[i]); else if(a[i]==')'||a[i]=='}'||a[i]==']') {   if(a[i]==')'&&GetTop(st,e)==true) {   if(e!='(') match=false; else Pop(st,e); } else if(a[i]=='}'&&GetTop(st,e)==true) {   if(e!='{') match=false; else Pop(st,e); } else if(a[i]==']'&&GetTop(st,e)==true) {   if(e!='[') match=false; else Pop(st,e); } else match=false; } i++; } if(!StackEmpty(st)) match=false; return match;
} int main()
{ char a[100]; bool match; Spstack *st; InitStack(st); gets(a); match=solve(a,st); DestroyStack(st); if(match)printf("Yes\n"); else printf("No\n"); return 0;
}

Problem C: 括号匹配(栈和队列)相关推荐

  1. 括号匹配(栈和队列)

    #include<iostream> #include<stack> #include<string> using namespace std; int main ...

  2. H - Streets of Working Lanterns Gym - 101149H -括号匹配-栈模拟

    H - Streets of Working Lanterns Gym - 101149H 题意:括号匹配,有很多"?",这些"?"可以凑成任意一种,判断最后能 ...

  3. NyistOJ 2 括号匹配(栈)

    NyistOJ 2 括号匹配 简单的栈的应用问题,利用STL中的栈来解决,当然-也可以自己手写栈.思路就是遇到左括号进栈,遇到右括号首先判断栈是否为空,若为空直接将这个右括号进栈,当然此时也就不匹配了 ...

  4. CF思维联系– Codeforces-990C Bracket Sequences Concatenation Problem(括号匹配+模拟)

    ACM思维题训练集合 A bracket sequence is a string containing only characters "(" and ")" ...

  5. python实现括号匹配不用栈_使用Python实现栈,判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...

  6. Data Structure_数组_栈_队列_链表_霍夫曼

    数组 数组在编码中很常见,就是把数据码成一排存放. 这就表示一个数组,这个数组有八个元素存放.对于元素的获取,主要就是通过下标获取,所以索引对于数组是很重要的,这个索引可以是有意义的,也可以是没有意义 ...

  7. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

  8. sdut 2134 数据结构实验之栈与队列四:括号匹配

    数据结构实验之栈与队列四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...

  9. c语言中缀表达式求值_数据结构考研笔记之栈与队列(四)栈与队列应用括号匹配、中缀表达式转前缀后缀问题...

    文字:独木 排版:独木 图片:独木 栈与队列 1.括号匹配问题 栈 例题1 例题2-----不匹配例题1 例题3-----不匹配例题2 2. 表达式求值问题 例题 1.中缀表达式转前缀表达式 2.中缀 ...

最新文章

  1. 使用mcBackup备份Windows 7 Media Center设置
  2. 2012.2.18-silverlight设计器崩溃
  3. Graphics Driver 的编写
  4. STM32工作笔记0044---什么是二极管什么是三极管
  5. xv6 Traps, interrupts, and drivers
  6. 使用arecord、aplay 实现录音和播放
  7. K8S 探针 readinessProbe、livenessProbe和startupProbe
  8. 【CF487E】Tourists
  9. Discuz安装与配置
  10. Fortinet :《2021 年OT与网络安全现状报告》之「实践解读」
  11. java获取emf中的文字_一键提取图片中的文字的5种方法!
  12. 基于容积卡尔曼滤波(CubatureKalmam Filter, CKF)的车辆状态观测器 Carsim与Simulink联合 可生成C代码
  13. IDEA中代码编辑器中字体修改
  14. windows10系统如何关闭数字签名认证
  15. 网吧游戏菜单 v2.1 官网
  16. call、ret、retf 指令详解
  17. CAN通讯程序C语言,CAN通讯协议C语言程序
  18. 利用随机森林算法对红酒数据集进行分类预测+对下载的人口数据集进行分类预测
  19. burpsuite插件——BurpFakeIP
  20. BBOS实现程序内购(in-app purchase)

热门文章

  1. linux账户初始化文件,Linux启动初始化配置文件浅析
  2. oracle使用关键字做表字段名_ArcGIS SQL使用
  3. 鸿蒙os2.0开发者beta版,鸿蒙 OS 2.0 开发者beta版针对Mate 40系列设备开放
  4. 乐橙本地录像回放不了_乐橙智能锁来告诉你:你家门真的安全吗?
  5. hdc mfc 画扇形图_MFC画图总结-DIB图形绘制
  6. 服务器邮件权限的开放,企业邮件服务器收发邮件权限
  7. linux php和java环境变量配置_Linux下配置Java环境变量
  8. java gc机制新区域旧屋_Java 内存回收机制——GC机制-Go语言中文社区
  9. 卫生系统计算机考试内容,2021年卫生资格考试题型是什么样的?一篇搞懂!
  10. 闲暇所学“表白对话框”