YTU 3003: 括号匹配(栈和队列)
3003: 括号匹配(栈和队列)
时间限制: 1 Sec 内存限制: 128 MB
提交: 2 解决: 2
[提交][状态][讨论版]
题目描述
假设一个表达式中只允许包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用如:(…[…{… …[…]…}…[…]…(…)…]…)。设计一个算法,判断表达式中的括号是否正确配对。输出结果为Yes或者No。
顺序栈的定义为
输入
{[][]()([])}[]()
输出
Yes
样例输入
{[()[]][}]
样例输出
No
提示
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;
}
转载于:https://www.cnblogs.com/im0qianqian/p/5989393.html
YTU 3003: 括号匹配(栈和队列)相关推荐
- 括号匹配(栈和队列)
#include<iostream> #include<stack> #include<string> using namespace std; int main ...
- H - Streets of Working Lanterns Gym - 101149H -括号匹配-栈模拟
H - Streets of Working Lanterns Gym - 101149H 题意:括号匹配,有很多"?",这些"?"可以凑成任意一种,判断最后能 ...
- NyistOJ 2 括号匹配(栈)
NyistOJ 2 括号匹配 简单的栈的应用问题,利用STL中的栈来解决,当然-也可以自己手写栈.思路就是遇到左括号进栈,遇到右括号首先判断栈是否为空,若为空直接将这个右括号进栈,当然此时也就不匹配了 ...
- python实现括号匹配不用栈_使用Python实现栈,判断括号是否平衡
栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...
- Data Structure_数组_栈_队列_链表_霍夫曼
数组 数组在编码中很常见,就是把数据码成一排存放. 这就表示一个数组,这个数组有八个元素存放.对于元素的获取,主要就是通过下标获取,所以索引对于数组是很重要的,这个索引可以是有意义的,也可以是没有意义 ...
- c语言括号匹配的检验,检验括号匹配的算法
用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...
- sdut 2134 数据结构实验之栈与队列四:括号匹配
数据结构实验之栈与队列四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...
- c语言中缀表达式求值_数据结构考研笔记之栈与队列(四)栈与队列应用括号匹配、中缀表达式转前缀后缀问题...
文字:独木 排版:独木 图片:独木 栈与队列 1.括号匹配问题 栈 例题1 例题2-----不匹配例题1 例题3-----不匹配例题2 2. 表达式求值问题 例题 1.中缀表达式转前缀表达式 2.中缀 ...
- Problem C: 括号匹配(栈和队列)
Problem C: 括号匹配(栈和队列) Time Limit: 1 Sec Memory Limit: 128 MB Submit: 76 Solved: 18 [Submit][Status ...
最新文章
- JavaScript原生代码处理JSON的一些高频次方法合集
- 美国半导体十年计划中的NO.1,模拟硬件究竟有什么价值?
- 【机器学习】4 款超级棒的模型可解释性工具包,总有一款适合你!
- linux/Windows系统如何安装PHP-openssl扩展
- [机器学习] XGBoost 自定义损失函数-FocalLoss
- leetcode 87. 扰乱字符串(dp)
- 4 FI配置-财务会计-创建会计科目表或总账科目表(COA-Chart of Account)
- Python 必知的 20 个骚操作!
- 恢复SQLSERVER被误删除的数据(转——收藏)
- the system requirements are not satisied或Android Studio不支持HAXM
- 高斯滤波 c++实现
- 计算机组成原理罗克露课后答案,计算机组成原理[完整版](罗克露)(全)原版教案.ppt...
- 考勤月度统计mysql_考勤查询统计SQL脚本
- 已知非线性规划问题,写出K-T条件
- 一文搞懂经济数据中M0 M1 M2
- 聊聊技术人的“绩效考核”
- 虚拟化存储和非虚拟化存储
- 微信公众号开发笔记(二):微信分享接口实现和问题
- NDK Resolution Outcome: Project settings: Gradle model version=XXX, NDK version is UNKNOWN
- 中缀和后缀表达式的转换
热门文章
- MySQL数据库与Oracle数据库在存储中文字符以字节或字符存储的区别
- 重新配置oralce dbconsole
- RenderTransformOrigin 的作用
- django mysql 修改密码_Django更改sqlite数据库使用mysql数据库 - 李金龙
- Socket API: I/O函数recvmsg()与sendmsg()
- 用到的python组件
- C#通用验证类:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP
- 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境
- 【java学习之路】(java SE篇)009.IO
- 安装pyOpenGL/python-opengl