括号分配(栈和队列)C
来源:互联网 发布:linux 翻译软件 编辑:程序博客网 时间:2024/05/15 23:45
问题 C: 括号匹配(栈和队列)
时间限制: 1 Sec 内存限制: 128 MB提交: 70 解决: 17
[提交][状态][讨论版]
题目描述
假设一个表达式中只允许包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用如:(…[…{… …[…]…}…[…]…(…)…]…)。设计一个算法,判断表达式中的括号是否正确配对。输出结果为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为一个空栈。
输入
{[][]()([])}[]()
输出
Yes
样例输入
{[()[]][}]
样例输出
No
提示
1、注意括号匹配问题
2、只需提交你所编写的算法
#include <stdio.h>#define Max 105typedef 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; char e; int match=1; 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=0; } i++; } if(!StackEmpty(st)) match=0; 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;}
0 0
- 括号分配(栈和队列)C
- Problem C: 括号匹配(栈和队列)
- Problem C: 括号匹配(栈和队列)
- C数据结构-栈和队列,括号匹配举例---ShinePans
- 栈和队列---括号匹配
- [栈和队列]括号匹配
- 括号匹配(栈和队列)
- YTU 3003: 括号匹配(栈和队列)
- 栈和队列应用之括号匹配
- YTU 2238: 括号匹配(栈和队列)
- 数据结构--堆和队列&&C语言的内存分配--堆和栈
- 括号配对-c(栈)
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (栈)
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (数组)
- 【数据结构】 栈和队列 YTU 2238 括号匹配(栈
- 利用栈和队列计算带有括号的表达式(纯理论)
- 烟大 2238: 括号匹配(栈和队列)
- 数据结构栈和队列的括号匹配函数
- 最牛最暴力的开源协议:WTFPL
- 京东笔试题 小东复习,规划时间
- 开发没有直径,但也要避免走弯路
- Kubernetes和OpenStack到底是什么关系?
- 获取当前时间的前两分钟的时间+todate('2015-01-01 14:20:01','yyyy-MM-dd hh24:mi:ss')
- 括号分配(栈和队列)C
- hdu3172 Virtual Friends--并查集
- 网易 2016 实习研发工程师 3道 编程题
- 直接看到图片不用点开就能看到 win8.1
- nginx实现请求转发
- hdu1379DNA Sorting
- Quartus 13.0安装教程
- C++引用详解
- 联编-迟后联编-先期联编