Translate

2018년 7월 21일 토요일

전위 표기를 후위 표기로 변환(prefix to postfix)

2011년 3월 28일 월요일

#!/usr/bin/ruby
# coding: utf-8

# 전위 표기(prefix)에서 후위 표기(postfix)로 변환

prefix = '+ * / A ^ B C D E'.split # 입력된 전위 표기 배열
postfix = [] # 후위 표기 출력용 배열

index = 0 # 후위 표기 배열 인덱스
stack = [] # 연산자 스택

for element in prefix
    if element =~ /[+\-\*\/\^]/
        stack.push(element)
    else
        postfix[index] = element
        index = index + 1

        # first 는 bottom, last 는 top
        while (not stack.empty?) and (stack.last.eql? :left_done)
            raise 'error 1' if stack.pop.nil?
            postfix[index] = stack.last
            index = index + 1
            raise 'error 2' if stack.pop.nil?
        end # end of while

        stack.push(:left_done)
    end # end of case
end # end of for

p prefix.join(" ")  #=> "+ * / A ^ B C D E"
p postfix.join(" ") #=> "A B C ^ / D

댓글 없음:

댓글 쓰기

응용 어플 끝글자 버그 잡는 거 진짜 개쉽습니다

그 동안 제가 끝글자 버그를 잡지 않고 방치한 이유 우선 책임, 의무가 없습니다. 제가 해당 어플 개발자도 아닐 뿐더러 오픈소스가 원래가 유지보수 의무, 보증 책임이 없습니다 . 이렇게 개떡 같은 게 오픈소스입니다. 전 과거 libhwp 하냐고...