Что делать при конвертации инфикса в постфиксное выражение с использованием стека? - PullRequest
0 голосов
/ 22 апреля 2019

Проблема, с которой я сталкиваюсь, заключается в том, что делать, если два оператора с одинаковыми приоритетами являются их?
Пример:
Если ^ находится на вершине стека и ^ приходит, что делать?
Должен ли яввести его в стек или просто выдвинуть один ^ или оба ^ выйдут из стека?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Что делать в этом случае зависит от оператора или его конкретного уровня приоритета и называется ассоциативностью оператора: https://en.wikipedia.org/wiki/Operator_associativity

Обычно + и - имеют одинаковый приоритет и левую ассоциативность, например, что означает a + b-c + d = ((a + b) -c) + d .

Операторы присваивания обычно имеют правую ассоциативность, то есть a = b + = c = d совпадает с a = (b + = (c = d))

Я не провел подробного опроса, но я думаю, что операторы возведения в степень обычно имеют правую ассоциативность, потому что левая ассоциативность избыточна с умножением, то есть (a ^ b) ^ c = a ^ (б * в)

0 голосов
/ 22 апреля 2019

Поскольку оба оператора имеют одинаковый приоритет, не имеет значения, в каком порядке вы выполняете вычисления, если в них не используется скобка. Вы можете поместить его в стек и выполнить расчет позже вместе или вытолкнуть существующий, чтобы выполнить расчет сейчас.

...