假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
2017-09-24 12:50
1006 查看
栈的应用 对于acmer这算是水题了吧
stack <char> Q;
char s[11000];
int main()
{
int T,i;
Q.push('#');
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]!='['&&s[i]!='('&&s[i]!=']'&&s[i]!=')'&&s[i]!='{'&&s[i]!='}')
continue;
if(s[i]=='[' || s[i]=='('||s[i]=='{')
Q.push(s[i]);
else if((s[i]==']' && Q.top()=='[') || (s[i]==')' && Q.top()=='(')||(s[i]=='}' && Q.top()=='{'))
Q.pop();
else
Q.push(s[i]);
}
if(Q.top()=='#')
printf("Yes\n");
else
printf("No\n");
while(Q.top()!='#')
Q.pop();
}
return 0;
}
stack <char> Q;
char s[11000];
int main()
{
int T,i;
Q.push('#');
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
int len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]!='['&&s[i]!='('&&s[i]!=']'&&s[i]!=')'&&s[i]!='{'&&s[i]!='}')
continue;
if(s[i]=='[' || s[i]=='('||s[i]=='{')
Q.push(s[i]);
else if((s[i]==']' && Q.top()=='[') || (s[i]==')' && Q.top()=='(')||(s[i]=='}' && Q.top()=='{'))
Q.pop();
else
Q.push(s[i]);
}
if(Q.top()=='#')
printf("Yes\n");
else
printf("No\n");
while(Q.top()!='#')
Q.pop();
}
return 0;
}
相关文章推荐
- 括号配对:假设一个数学算式中包括圆括号"()",方括号”[]"和花括号“{}”三种类型,编写一算法判断表达式的括号是否配对。
- 假设表达式中允许包括3中括号:(,[,{,设计一个算法采用顺序栈判断表达式中的括号是否正确配对
- 假设一个数学算法中包括圆括号(),方括号[],花括号{}三种类型,编写表达式的括号是否配对
- 设计一个算法判别用字符串表示的表达式中开、闭括号是否配对出现
- 【数据结构基础】判别给定的表达式所含括号是否正确配对出现的算法。
- “链栈”判断表达式中的括号是否正确配对
- 输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。
- 练习1-24: 编写一个程序,查找C语言程序中的基本语法错误,如圆括号,方括号以及花括号不配对等。要正确的处理引号(包括单引号,双引号)~转移字符序列与注释(如果读者想把该程序编写成完全通用的程序,难度会比较大。)
- “顺序栈”判断表达式中的括号是否正确配对
- Java - - 判断表达式中的括号是否正确配对
- 一个判别表达式中开、闭括号是否配对出现的算法
- 编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
- 判别给定表达式中所含括号是否正确配对出现的算法
- 判定一个算术表达式中的圆括号是否正确配对
- 利用栈写一个程序, 检验文本中的圆括号、方括号、花括号是否正确嵌套.
- js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式
- 算法学习----给定入栈的顺序,判断另一个顺序是否为该入栈顺序的一个弹出顺序
- C语言:【面试题】在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
- 利用顺序栈实现:判别表达式中括弧是否正确配对(BracketMatch函数)
- 栈的基本操作及如何判断一个表达式中的左右括号是否匹配