C#实现计算后缀表达式

        /// <summary>
        /// 计算后缀表达式
        /// </summary>
        /// <param name="expression">表达式:"6 2 / 3 - 4 2 * +"</param>
        /// <returns></returns>
        public int PostfixExpression(string expression)
        {
            var bdslist = expression.Split(' ');
            Stack<int> vs = new Stack<int>();
            for (int i = 0; i < bdslist.Length; i++)
            {
                if (int.TryParse(bdslist[i], out int a))
                {
                    vs.Push(a);
                }
                else
                {
                    // 获取右侧的计算数
                    int right = vs.Pop();
                    // 获取左侧的计算数
                    int left = vs.Pop();
                    switch (bdslist[i])
                    {
                        case "+":
                            vs.Push(left + right);
                            break;
                        case "-":
                            vs.Push(left - right);
                            break;
                        case "*":
                            vs.Push(left * right);
                            break;
                        case "/":
                            vs.Push(left / right);
                            break;
                        default:
                            break;
                    }
                }
            }
            return vs.Pop();
        }
posted @ 2021-10-11 21:11  wqq1027  阅读(72)  评论(0)    收藏  举报