소스 : https://github.com/stemp12/study/blob/master/Datastructure/postfix.cpp
이건 내가 지금으로부터 3년전 즉 대학교 2학년때 작성한 것인데 최근에 다시봐서 적는다.
사칙연산이 중위연산으로 들어올때 후위연산으로 구하는 것인데, 계산기의 기본 원리라고 보면 된다.
입력이 들어오면 스택을 활용해서 구하면 된다. 다음과 같은 규칙을 따른다.
1. infix 입력
2. 입력된 문자열은 정수가 아니므로 정수로 분리. 2자리 이상의 수가 들어올 수 있으므로 그 부분역시 처리.
이때 완성된 숫자는 num이라는 스택에 삽입.
3. ( 는 무조건 삽입, )는 (나올 때까지 방출.
4. 모든 사칙연산은 자기보다 낮은 우선순위를 만날 때까지 방출 후 자기 삽입.
이유는 연산에 깊숙이 쌓이면 우선순위가 낮다는 것.
5. 피연산자는 그냥 출력.
6. 마지막에는 스택에 쌓여 있는 것 전부 출력.
위와 같은 규칙을 따라 계산하면 된다. 뭐 어디서도 쓸모는 없겠으나..(솔직히 짜는데 시간이 오래걸려서 회사 면접문제에는 안나올 것 같다. 은근 손봐야할게 많다.)
그렇다고 안할수도 없는것이다. 자료구조는 개발자에게 기본소양이라고 생각한다.
'Data structure' 카테고리의 다른 글
[C++] 단일 연결 리스트 (0) | 2016.01.25 |
---|