[温故而知新] 数据结构

一、 栈    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》       

        

posted on 2005-11-22 19:10  dekn  阅读(328)  评论(0)    收藏  举报

导航