您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

基于栈的后缀表达式求值(洛谷P1449题题解,Java语言描述)

星拱北辰 发布时间:2020-03-12 10:22:03 ,浏览量:0

题目要求

P1449题目链接

在这里插入图片描述

分析

给出后缀表达式求值,就相当于没了括号,而且很直接。

我们需要使用栈结构来完成任务。

Java原装的栈使用了很多synchronized,导致性能不佳,但我们也就将就着用一下吧……

注意到@就停止,不到@,每遇到一个数就入栈,每遇到一个符号就出栈两个数并进行对应运算,结果再入栈。

AC代码(Java语言描述)
import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Stack stack = new Stack();
        Scanner scanner = new Scanner(System.in);
        String sequence = scanner.nextLine();
        scanner.close();
        int tempNum = 0, x, y;
        for (char c : sequence.toCharArray()) {
            if (c == '@') {
                break;
            }
            switch (c) {
                case '+':
                    x = stack.pop();
                    y = stack.pop();
                    stack.push(y+x);
                    break;
                case '-':
                    x = stack.pop();
                    y = stack.pop();
                    stack.push(y-x);
                    break;
                case '*':
                    x = stack.pop();
                    y = stack.pop();
                    stack.push(y*x);
                    break;
                case '/':
                    x = stack.pop();
                    y = stack.pop();
                    stack.push(y/x);
                    break;
                case '.':
                    stack.push(tempNum);
                    tempNum = 0;
                    break;
                default:
                    tempNum = tempNum*10+c-'0';
                    break;
            }
        }
        System.out.println(stack.pop());
    }
}
关注
打赏
1660750074
查看更多评论
立即登录/注册

微信扫码登录

0.0460s