您的位置:首页 > 理论基础 > 数据结构算法

[温故而知新] 数据结构

2005-11-22 19:10 169 查看
一、 栈 Stack


peek() 将栈顶元素返回
pop() 在将栈顶元素从栈中移出后,将该栈顶元素返回
push(Object) 将给定元素插入栈顶
search(Object) 返回给定对象在栈中的位置
empty()判断栈是否为空
about: RPN范式
如果一个算术表达式中的每一个运算符均位于操作数的后面,称这样的表示为表达式的后缀表示,也称为逆波兰表示(reverse Polish notation,or RPN)。

简单的说:

Equation with parenthesis (1 + 2) * 3
Prefix notation * 3 + 1 2 or * + 1 2 3
Postfix notation 1 2 + 3 * or 3 1 2 + *
第一个表达式是通常带括号的算术表达式,第二是波兰范式,后一种就是逆波兰范式

使用(逆)波兰范式可以省去括号,让表达式顺序执行。

逆波兰范式这个网页介绍得比较清楚:http://users.ece.gatech.edu/~mleach/revpol/ 可以在本BLOG的文章收藏中找到

把嵌套括号的表达式翻译成RPN表达式可以减少循环,加快求值速度。

把普通算术表达式翻译成RPN表达式方法如下(转贴自http://www.cs.utsa.edu/~wagner/CS1723/fall01/eval/trans.html):

可以在本BLOG的文章收藏中找到

小结:
stack的后进先出。
计算机操作系统在执行一个递归函数时,通过使用一个stack来保存每次递归调用时当前运行状态
stack应用相关的有RPN(Reverse Polish notation)范式,其中RPN又分为后缀表达式与前缀表达式
利用stack,可以实现一个字母的倒序排列。 即reverse方法

待续...

《数据结构习题与解答 For JAVA》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: