括号匹配算法
来源:互联网 发布:上海海隆软件月薪 编辑:程序博客网 时间:2024/05/17 13:45
先说明,在计算算数表达式的值时,可用两个栈作为辅助工具。
假设一个算术表达式中包含三种括号,圆括号(,方括号【,和花括号{
编写算法判断给定表达式中所含括号是否配对出现。
分析:可以将给定表达式存入字符数组a[],然后依次考察每个字符。如果为左括号,则将其入栈,如果为右括号
则将其与站定元素比较,若配对了一对括号,则将栈顶元素出栈,若不匹配,则退出算法并返回不匹配结果。
对每个字符考查完毕,若栈为空,则说明括号配对,否则,说明缺少左括号或右括号。
算法只考查左右括号,对其他字符不做处理。
int prool(char a[],int n)
{
top=-1;i=0;flag=1;//假设采用顺序栈,flag为配对标志
while(i<n&&flag)
{
if(a[i]=='(' || a[i]=='{' || a[i]=='[') s[++top]=a[i] ;
else
{
switch a[i]
{
case ')' if(top==-1||s[top--]!='(') {flag=0; break;}
case '}' if(top==-1||s[top--]!='}’) {flag=0; break;}
case '[' if(top==-1||s[top--]!=']') {flag=0; break;}
}
}
i++;
}
if(top!=-1) flag=0; //栈不为空,说明括号不匹配
return flag;
}
java的写法
int prool(char a[],int n)
{
Stack stack = new Stack();
i=0;flag=1;//假设采用顺序栈,flag为配对标志
while(i<n&&flag)
{
if(a[i]=='(' || a[i]=='{' || a[i]=='[') stack.push(a[i]) ;
else
{
switch a[i]
{
case ')' if(stack.empty()||stack.pop()!='(') {flag=0; break;}
case '}' if(stack.empty()||stack.pop()!='}’) {flag=0; break;}
case '[' if(stack.empty()||stack.pop()!=']') {flag=0; break;}
}
}
i++;
}
if(!stack.empty()) flag=0; //栈不为空,说明括号不匹配
return flag;
}
- java括号匹配算法
- 括号匹配算法思想
- 验证括号匹配-算法
- 趣味算法-括号匹配
- 括号匹配算法
- java括号匹配算法
- 括号匹配算法
- 括号匹配算法
- 匹配括号的算法
- 括号匹配算法
- java 括号匹配算法
- 括号匹配算法
- 括号匹配算法
- 括号匹配算法
- 括号匹配 算法
- 括号匹配算法
- 括号匹配算法
- 括号匹配算法
- 微博RPC框架Motan
- JavaScript学习笔记之history常用方法
- XML04-JDOM解析----------------02
- java 消息队列
- CI Weekly #1 | 这份周刊,带你了解 CI/CD 、DevOps、自动化测试
- 括号匹配算法
- [Android测试] Android Studio+Appium+Java+windows 自动化测试之一: 自动化测试理解
- jdbc 学习总结四之事物控制
- 屏幕常亮 代码
- logistic regression
- Java常见的同步和异步的区别、特点、联系
- android开发的一些步骤
- 高德地图车机版API演示程序
- 数据分析常识积累