利用栈解决逆波兰表达式问题

2021-02-04  本文已影响0人  梁森的简书
0.逆波兰表达式.png
0.逆波兰表达式流程.png
/// 利用栈解决逆波兰表达式问题
    private func testReversePolishNotation(){
        var stack = Stack()
        // 1+(1*2)-(2/1)=1
        let strArray = ["1", "1", "2", "*", "+", "2", "1", "/", "-"]
        for i in 0..<strArray.count {
            let str = strArray[i]
            switch str {
            case "+":
                let o1 = stack.pop() as! Int
                let o2 = stack.pop() as! Int
                let result = o2 + o1
                stack.push(item: result)
            case "-":
                let o1 = stack.pop() as! Int
                let o2 = stack.pop() as! Int
                let result = o2 - o1
                stack.push(item: result)
            case "*":
                let o1 = stack.pop() as! Int
                let o2 = stack.pop() as! Int
                let result = o2 * o1
                stack.push(item: result)
            case "/":
                let o1 = stack.pop() as! Int
                let o2 = stack.pop() as! Int
                let result = o2 / o1
                stack.push(item: result)
            default:
                let result = Int(str)!
                stack.push(item: result)
            }
        }
        let result = stack.pop() as! Int
        print("\(result)")
    }

demo地址:https://github.com/yangguanghei/studyDateStructure

上一篇下一篇

猜你喜欢

热点阅读