进制转换
括号匹配的检验
解决:遵循原则先进栈的后匹配,后进栈的先匹配
右括号进栈,若匹配成功则出栈。
表达式求值
(由运算符优先级
确定运算顺序的对表达式求值算法——算符优先算法
)
为了实现表达式求值,需要设置两个栈:
- 一个是
算符栈
OPTR,用于寄存运算符
。 - 另一个称为
操作数栈
OPND,用于寄存运算数和运算结果
。
求值的处理过程是自左至右
扫描表达式的每一个字符
-
当扫描到的是运算符,则将其压入栈OPND,
-
当扫描到的是运算符时
1.若这个运算符比OPTR栈顶运算符的优先级高
,则入栈OPTR,继续向后处理
2.若这个运算符比OPTR栈顶运算符优先级低
,则从OPND栈中弹出两个运算数,从栈OPTR中弹出栈顶运算符进行运算,并将运算结果压入栈OPND。 -
继续处理当前字符,直到遇到结束符为止。
舞伴问题
分析:先入队的男士或女士先出队配成舞伴,因此该问题具有典型的先进先出
特性,可以用队列
作为算法的数据结构。
- 首先构造两个队列
- 依次将队头元素出队配成舞伴
某队为空
,则另外一队等待着则是下一个舞曲第一个可获得舞伴
的人。