栈
栈是按后进先出的原则进行处理的。
栈也分为顺序存储和链式存储两种结构,分别称为顺序栈和链栈。若事先知道栈顶元素的范围,可以使用顺序栈结构,若栈中元素的数目变化范围很大,就要考虑使用链式存储结构。
1 | //栈 |
栈的应用:
表达式求和:
为了实现运算符的优先算法,可以使用两个栈:一个存操作数operand,一个存运算符oper。依次读入字符,如果是操作数则进operand,如果是运算符,就要判断该运算符与oper中栈顶的运算符的优先级,如果低于栈顶运算符的优先级,就取出oper栈顶的操作符和两个operand栈顶操作数,计算完后将结果重新存入operand栈顶。最后再不断取出两个操作数和一个运算符然后将结果重新放入operand中。
1 | //表达式求和: |
数制转换:
十进制数和其他数值的转换:
N = (N div d)+ N mod d 【N为十进制数, d为需要转换的数制的基数, div为整除, mod为求余】
1 | //数制转换: |
括号匹配检验:
1 | //括号匹配检验: |
栈与递归的实现:
实例只是说明栈和递归可以这样用,算n!不用这样。。。
1 | //用栈实现n!的具体算法: |
利用栈寻找迷宫路径:
1 | //递归的执行过程可以利用栈结构来保存数据和返回地址 |
1 |
|
1 |
|
1 |
|