The I/p to the algo will be an expression like this:
a+(-b)
a*-b+c
i.e any expression that a standard C compiler would support.
Now
In your input, when you have 2 consecutive operators, the second operator will be unary. If you have more consecutive operators, all but the first will be unary operators.
Transform all your unary -
operators to an operand -1
and an operator *
, and remove all unary +
operators.
If the first element is an operator, it is an unary operator.
Parenthesis are a special case, but you can do a first pass in which you ignore them. In the following example -
is consecutive to *
.
4*(-(5))
and your tokens would become:
4
*
(
-1
*
(
5
)
)