9강 자료구조 스택 활용 - 계산기 2
infix -> postfix 변환 방법
왼쪽괄호 ( 는 우선순위가 가장 낮다.
오른쪽활호 ) 는 우선순위가 가장 높다.
결과값은 리스트 ouststack에 넣고 연산자는 스택 opstack에 넣었다가 oustack으로 옮긴다.
피연산자가 나오면 바로 outstack에 넣고, 연산자가 나오면 opstack에 넣는데 자신보다 우선순위가 높은게 opstack 안에 있다면 pop시키고 push한다. (는 그냥 들어가지만 )가 들어갈 차례가 오면 (가 나올때까지 pop하고, pop된건 outstack에 넣는다.
아래 코드는 pseudo 코드이다
for each token in expr:
if token == operand:
outstack.append(token)
if token == '(':
opstack.push(token)
if token == ')':
opstack에 저장된 연산자
'('를 pop할때까지 pop
-> outstack에 append
if token in '+-*/':
opstack에서 token보다 우선순위 높은 연산자 모두 pop, 자신이 push
opstack에 남은 연산자 모두 pop -> outstack
Author And Source
이 문제에 관하여(9강 자료구조 스택 활용 - 계산기 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@chss3339/9강-자료구조-스택-활용-계산기-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)