|
스택 구현은 계산기 알고리즘에 잘 나와 있습니다. 하실려고 하는 것도 그런것 같구요.
이전에 했던 경험을 되살려보면,
간단한 개념은 순차 버퍼를 두고 operator 와 operand 를 각각 다른 버퍼에 집어 넣은 다음,, 순서대로 앞에서부터 끄집에 내어 계산을 시키는 겁니다.
일단 operator 버퍼와 operand 버퍼 두개를 두고, "3 + 5" 계산한다 치면,
operand 버퍼에는 3, 5가 들어가서 LIFO(Last In First Out) 방식으로 5,3 으로 들어가 있을 테고,
operator 버퍼에는 + 가 들어가 있겠죠.
* 괄호가 있으면 골치 아프지만요.... 일단 거기까지는 고려하지 않기로 하고,,
먼저 *, / 부터 operator 를 찾습니다. 양 operand 사이에는 반드시 하나의 operator가 있어야 하니까요 양 operand 사이에 존재하는 operator를 찾아서 계산해 주고 계산된 operator 는 operator 버퍼에서 제거해 주고, operand 버퍼에 계산 값을 반영해서 변경해 줍니다. 이경우 두개의 operand 가 하나의 operand 로 줄겠죠. *, / 가 다 없어졌으면 +, - 에 대해서 연산을 해 줍니다.
그런식으로 모든 operator 가 소진되도록 루프를 돌리면 계산기가 완성됩니다.
C초보 님이 쓰신 글 :
: C공부를 하고있는데 어려운 예제가 나와서 질문좀 드립니다.
: <사용자의 요청에따라 "3+5"를 전위 중위 후위 표현식으로 변경하여
: 스택에 입력하고 하나씩 꺼내어 출력하라> 라는 문제인데
: 3+5를 입력하여 전위는 +35 로 스택에 담고 중위는 3+5 로 후위는 35+ 로 담앗다가
: 사용자의 요청에따라 하나씩꺼내서 출력할떄 5 3 + 로 나온다는 것인데
: 소스를 짜려고하니 잘 안되네염; 아시는분 ~ 헬푸.. 설명도좀 해주세요;
|