inpix식을 prefix식으로 바꿔주는 알고리즘을 알고싶습니다.
글쓴이: nidle / 작성시간: 목, 2003/04/10 - 11:07오후
안녕하세요,, 제가 프infix에서 prefix로 전환하는 프로그램을 만들려고합니다.
아무리 생각해두 알고리즘을 만들수가 없더군요,
한가지생각한것이있기는한데. 문제가 생겨서요,
(a+b)*c라고 한다면 우선 뒤쪽부터 피연산자는 그냥 출력하고 연산자는 스택에 넣어서 우선순위를 따져서 만드느거죠
c는 그냥 출력되고 '*'스택에 들어가고 우측괄호')' 가 스택에 들어가고
b는 출력 '+' 스택에 들어가고 a는 출력되고좌측괄호'('나 비교되면서 '+'pop 되고 출력되고, 끝으로 '*'가 출력되는거죠,
그럼 cba+*이렇게 나오고 이것을 거꾸로 쓰면prefix방식인 *+abc가나오죠
이런 알고리즘을 생각했는데 문제가 조금 있고 복잡하기두 하구요.
다른 알고리즘이 없을까 지금도 생각합니다. 아시는분이 계시다면 도와주세요
저를 도와주시려 정리되지 않은 글을 읽어주신점 감사합니다..
Forums:
수식트리를 만들면 됩니다.
수식트리를 만드는 방법은 부모는 연산자 자식은 숫자 이런식으로
만들면 되구요. 숫자는 항상 단말노드가 되겠죠.
그리고 연산자의 우선순위에 따라서 부모 자식 관계가 됩니다.
(a + b) * c
이식을 수식 트리로 만들면?
....*....
.../\....
..+ c...
../\.....
.a b....
이트리를 prefix로 탐색하면서 찍어주면 prefix식 만들어 집니다.
트리 만드는 법은 한번 생각해 보세요
^^
답변감사합니다.,, 그런데 알지못하는부분이 잇어서요
트리구조에 연산식을 삽입해야 하는 부분을 어떻게 해야하는지
잘모르겟어요,,
어떤 알고리즘으로 삽입을해야 되는지.. 책을 아무지찾아봐도
잘 나와있지가 않아서요
스택!
제가 학교에서 스택 배울때 공부했던 소스입니다.
무슨 책인지 잘 몰르겠는데..(Imperative programming in c 라는 책 인것 같음) 아주 잘 짜여진 소스입니다.
도움이 되었으면 좋겠네요.
예전에 검색했었죠.
예전에 검색을 한 적이 있어서..
참고할 만한 링크들을 적어볼게요.
http://www.funducode.com/freec/datastructure/datastruct5.htm
http://www.qiksearch.com/articles/cs/infix-postfix/
참고되시길...
2006년 1월 28일만 보고 산다 -_-;
댓글 달기