博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言数据结构之栈:括号匹配
阅读量:5102 次
发布时间:2019-06-13

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

括号匹配这是个很简单的题目,如果只有小括号,就模拟进栈和出栈的过程就行了:

注:输入时'@'作为结束标志

 

#include 
int main(){ freopen("stack.in","r",stdin); freopen("stack.out","w",stdout); int in=0; char s[256]; scanf("%s",&s); int i=0; while(s[i]!='@') { if(s[i]=='(') in++; if(s[i]==')') in--; if(in<0) break; i++; } if(in==0) printf("YES"); else printf("NO"); return 0;}

 

样例输入1:2*(x+y)/(1-x)@

样例输出1:YES

 

样例输入2:(25+x)*(a*(a+b+b)@

样例输出2:NO

 

至于多括号,就需要创建一个栈了:

输入无需@做结尾

 

#include 
#include
char stack[256];int top=0;void push(char c){ top++;stack[top]=c;}int pop(){ top--;return(stack[top+1]);}int main(){ freopen("check.in","r",stdin); freopen("check.out","w",stdout); char s[256]; gets(s); int lenofs=strlen(s); int i; char c; for(i=0;i<=lenofs-1;i++) { if(s[i]=='(') { push('('); } if(s[i]==')') { push(')'); c=stack[top-1]; if(c=='(') { pop();pop(); } } if(s[i]=='[') { push('['); } if(s[i]==']') { push(']'); c=stack[top-1]; if(c=='[') { pop();pop(); } } if(top<0) break; } if(top==0) printf("OK"); else printf("Wrong"); return 0;}

 

转载于:https://www.cnblogs.com/rjgcs/p/5195975.html

你可能感兴趣的文章
spark--环境搭建--4.ZooKeeper345集群搭建
查看>>
【Leetcode_easy】1103. Distribute Candies to People
查看>>
Codeforces Round #426 (Div. 2) C. The Meaningless Game
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
leetcode - Next Permutation
查看>>
C#创建Windows服务程序
查看>>
Spring Boot 2.0系列文章(五):Spring Boot 2.0 项目源码结构预览
查看>>
中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
查看>>
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
推荐系统入门实践:世纪佳缘会员推荐
查看>>
[整理]苹果审核被拒后,返回崩溃日志应该怎么分析处理
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
iframe跨域与session失效问题
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
Hash和Bloom Filter
查看>>
SQL Server获取月度列表
查看>>