Вычислить значение выражения в постфиксной форме

В символьной строке записано выражение из цифр и операций в постфиксной форме (знак операции после операндов). Проверить правильность записи и найти значение выражения. Пример: выражение (2+3)*4-5*6 записывается в постфиксной форме как 23+4*56*- Помогите пожалуйста с задачей! Буду премного благодарен


Ответы (2 шт):

Автор решения: KoVadim

Вам просто нужно сделать обычный Алгоритм_сортировочной_станции

Если поищите внимательно, то найдете даже реализации.

→ Ссылка
Автор решения: Qwertiy

Числа - в стек, операции выполняешь над двумя последними значениями в стеке и результат помещаешь обратно. В качестве стека можно использовать массив достаточного размера.

function calc(s) {
  var st = []

  for (var t of s) {
    switch(t) {
      case "+":
        var r = st.pop(), l = st.pop()
        st.push(l + r)
        break
        
      case "-":
        var r = st.pop(), l = st.pop()
        st.push(l - r)
        break
        
      case "*":
        var r = st.pop(), l = st.pop()
        st.push(l * r)
        break
        
      case "/":
        var r = st.pop(), l = st.pop()
        st.push(l / r)
        break
        
      default:
        st.push(+t)
    }
  }
  
  if (st.length !== 1) {
    throw new Error("Invalid expression")
  }
  
  return st.pop()
}

console.log(calc("23+4*56*-"))

→ Ссылка