소프트웨어 개발
수식의 표기법
원본 27~28쪽
전위 표기법(PreFix) : 연산자 → Left → Right, +AB
중위 표기법(InFix) : Left → 연산자 → Right, A+B
후위 표기법(PostFix) : Left → Right → 연산자, AB+
Infix 표기를 Postfix나 Prefix로 바꾸기Postfix나 Prefix는 스택을 이용하여 처리하므로 Infix는 Postfix나 Prefix로 바꾸어 처리한다.
환하시오.
| X = A / B * (C + D) + E |
|---|
• Prefix로 변환하기
❶ 연산 우선순위에 따라 괄호로 묶는다.
= ( X + ( * ( / (AB) + (CD) ) E) )
❸ 필요없는 괄호를 제거한다. = X + * / A B + C D E
• Postfix로 변환하기
❶ 연산 우선순위에 따라 괄호로 묶는다.
( X ( ( (A B) / (C D) + ) * E ) + ) =
❸ 필요 없는 괄호를 제거한다. X A B / C D + * E + =
Postfix나 Prefix로 표기된 수식을 Infix로 바꾸기
시오.
| A B C - / D E F + * + |
|---|
Postfix는 Infix 표기법에서 연산자를 해당 피연산자 두 개의 뒤로 이동한 것이므로 연산자를 다시 해당 피연산자 두 개의 가운데로 옮기면 된다. ❶ 먼저 인접한 피연산자 두 개와 오른쪽의 연산자를 괄호로 묶는다.
((A / (B - C)) + (D * (E + F))) ❸ 필요 없는 괄호를 제거한다. ((A / (B - C)) + (D * (E + F))) A / (B - C) + D * (E + F)
시오.
| + / A - B C * D + E F |
|---|
Prefix는 Infix 표기법에서 연산자를 해당 피연산자 두 개의 앞으로 이동한 것이므로 연산자를 다시 해당 피연산자 두 개의 가운데로 옮기면 된다. ❶ 먼저 인접한 피연산자 두 개와 왼쪽의 연산자를 괄호로 묶는다.
((A/(B-C)) + (D * (E+F))) ❸ 필요 없는 괄호를 제거한다. ((A/(B-C)) + (D*(E+F)))
A/(B-C)+D*(E+F)