线性结构之zhan

一、栈的定义

二、栈的实现

三、栈的应用

1、数制转换

算法基于的原理:N=(N div d) * d + N mod d,例如(1348)10=(2504)8的计算过程如下:

数制转换运算过程
N N div 8 N mod 8
1348 168 4
168 21 0
21 2 5
2 0 2

计算顺序从上至下,输出顺序从下至上。

2、括号匹配的检验

检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述。

算法的设计思想:

1)凡出现左括号,则进栈;

2) 凡出现有括号,首先检查栈是否空。若栈空,则表明该“右括号”多余,否则和栈顶元素比较,若相匹配,则“左括号出栈”,否则表明不匹配。

3)表达式检验结束时,若栈空,则表明表达式中匹配正确,否则表明“左括号”有余。

3、行编辑程序问题

在用户输入一行的过程中,允许用户输入出差错,并在发现有误时可以及时更正。合理的做法是:

设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区;并假设“#”为退格符,“@”为退行符。

4、表达式求值

5、实现递归

 

你可能感兴趣的:(算法和数据结构)