산술식을 트리로 구성하고 infix, prefix, postfix 방식으로 접근
- 최초 등록일
- 2005.05.17
- 최종 저작일
- 2005.05
- 7페이지/ 한컴오피스
- 가격 1,000원
소개글
산술식을 트리로 구성하고 infix(전위형), prefix(중위형), postfix(후위형) 방식으로 접근하는 프로그램, 자세한 주석이 달려있으며 같은 입력으로 세가지 결과를 모두 볼 수 있습니다.
컴파일 실행환경
GCC/비쥬얼스튜디오/C언어
본문내용
1) 해결방법
: 우선 한 개의 다항식을 입력받아 배열에 넣고 앞에서부터 순차적으로 검색하며 배열에 push함과 동시에 트리를 구성한다.
이 때 사용되는 배열은 연산자 배열과 피연산자 배열로 연산자 배열에는 char형의 값이 들어가며 피연산자 배열에는 그때 그때 생성된 피연산자 노드의 주소값이 들어간다. 이때의 자료형은 정의된 구조체의 포인터 형이다.
다항식을 배열에 push 할 때의 판단 기준은 피연산자는 조건없이 순차적으로 push 되며, 연산자의 경우는 연산자의 우선순위를 따져 이전에 넣은 연산자의 우선순위가 지금 넣으려는 연산자의 우선순위보다 높거나 같으면 이전에 넣은 연산자의 계산을 선행하는 동시에 배열에서 제거(pop)해 준 후 새로운 연산자를 push 한다. 이때 이전에 넣은 연산자의 계산을 선행한다는 것은 해당 연산자에 대한 한 개의 루트와 두 개의 차일드를 가지는 트리를 구성하여 결과를 나타낸다고 생각하고 피연산자의 배열에 push 한다. 이 때 연산자 우선순위를 판단하는 과정은 각 연산자에 레벨을 부여하는 방법을 사용하였다. 그리고 괄호연산의 경우는 괄호 안에서의 계산 과정도 밖에서의 과정과 같으나 연산자 우선순위에 관계없이 괄호 안의 연산자에 대한 트리 생성을 선행해 줌으로서 해결해 주었다.
그리고 다항식의 배열로의 적용이 끝났다 하더라도 트리 생성이 끝난 것이 아니다. 단지 연산자 우선순위에 따라 먼저 해주어야 하는 계산은 먼저 해주어 결국에는 우선순위가 낮은 연산자부터 높은 연산자로 배열되도록 하는 과정이었고, 다항식의 배열에 대입이 끝난 후에는 가장 오른쪽에 있는 연산자부터 트리를 생성해 주면 된다. 이때 새로 생성된 트리는 계속 위로 붙어 누적되므로 트리를 가리키던 헤더 값도 계속 변하게 된다.
infix, prefix, postfix로의 접근은 재귀함수를 사용하여 노드의 주소값을 찾아 들어가며 leaf노드의 링크값은 모두 NULL인것 을 참고하여 종료조건을 만들어 줌으로서 재귀함수가 가능해 진다.
참고 자료
없음