Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Máy tính tiền tố sử dụng ngăn xếp (stack) trong JavaScript


Chúng ta cần tạo một máy tính với phương thức nhập RPN (ký pháp Ba Lan ngược) sử dụng Stack trong JavaScript.

Xét mảng đầu vào sau:

const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];

Quy trình:

  • 1 là toán hạng, đẩy vào Stack.
  • 5 là toán hạng, đẩy vào Stack.
  • '+' là toán tử, lấy 1 và 5, tính toán và đẩy kết quả vào Stack.
  • 6 là toán hạng, đẩy vào Stack.
  • 3 là toán hạng, đẩy vào Stack.
  • '-' là toán tử, lấy 6 và 3, trừ chúng và đẩy kết quả vào Stack.
  • '/' là toán tử, lấy 6 và 3, chia chúng và đẩy kết quả vào Stack.
  • 7 là toán hạng, đẩy vào Stack.
  • '*' là toán tử, lấy 2 và 7, nhân chúng và đẩy kết quả vào Stack.

Và cuối cùng, đầu ra sẽ là:

const output = 14;

Ví dụ

Mã thực hiện:

const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];
const stackCalculator = (arr = []) => {
  const options = {
    '+': (a, b) => a + b,
    '-': (a, b) => a - b,
    '*': (a, b) => a * b,
    '/': (a, b) => a / b
  };
  const stack = [];
  arr.forEach(value => {
    stack.push(value in options
      ? options[value](...stack.splice(-2))
      : value
    );
  });
  return stack;
};
console.log(stackCalculator(arr));

Kết quả

Kết quả trong console:

[14]