数据结构第六章分讲、栈之逆波兰表达式

简介: (ReverseNotation,RPN,或逆波兰记法),也叫(将写在之后)。

 

一、逆波兰表达式

1.1概念

逆波兰式(Reverse Polish Notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)。

1.2算法:根据中缀表达式求后缀表达式

1.2.1思路分析

中缀表达式 a + b * c + ( d * e + f ) * g ,转换为后缀表达式为:a b c * + d e * f + g * +

举例:1+(2*3)+(4*5+6)*7==179,计算机无法识别 () 通过栈式算法如下:

image.gif编辑

1.2.2算法作用

由于计算机(计算器)无法识别我们通过 () 来限定的优先级,而计算机内部是栈式结构,相对计算机而言就需要逆波兰表达式算法。

1.2.3力扣

链接:逆波兰表达式

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack=new Stack<>();
        for(String s:tokens){
            if(isOperate(s)){
                int num2=stack.pop();
                int num1=stack.pop();
                switch(s){
                    case "+":
                    stack.push(num1+num2);
                    break;
                    case "-":
                    stack.push(num1-num2);
                    break;
                    case "*":
                    stack.push(num1*num2);
                    break;
                    case "/":
                    stack.push(num1/num2);
                    break;
                }
            }
            else{
                stack.push(Integer.parseInt(s));
            }
        }
        return stack.pop();
    }
    public boolean isOperate(String s){
        if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")){
            return true;
        }
        return false;
    }
}

image.gif

目录
相关文章
|
20天前
|
消息中间件 存储 搜索推荐
深入理解栈和队列(二):队列
深入理解栈和队列(二):队列
34 0
|
1月前
【栈】数据结构栈的实现
【栈】数据结构栈的实现
|
3天前
|
C语言
数据结构中顺序栈的进栈和出栈用C语言表示
数据结构中顺序栈的进栈和出栈用C语言表示
12 1
|
13天前
|
存储 算法 调度
数据结构期末复习(3)栈和队列
数据结构期末复习(3)栈和队列
18 0
|
25天前
|
存储 缓存 算法
【算法与数据结构】栈的实现详解
【算法与数据结构】栈的实现详解
|
25天前
|
存储 算法 编译器
【数据结构】栈算法(算法原理+源码)
【数据结构】栈算法(算法原理+源码)
【数据结构】栈算法(算法原理+源码)
|
29天前
|
存储
【数据结构】什么是栈?
【数据结构】什么是栈?
28 0
【数据结构】什么是栈?
|
1月前
|
存储 设计模式 算法
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
【C/C++ 数据结构 线性表】深入理解与实现栈:从基础到应用的全面探索
53 0
|
1月前
|
存储
用队列和栈分别实现栈和队列
用队列和栈分别实现栈和队列
17 1
|
1月前
栈和队列的实现(详解+图解!文末附完整代码)
栈和队列的实现(详解+图解!文末附完整代码)
78 2