C언어로 구현한 Infix to Postfix
- 최초 등록일
- 2021.03.15
- 최종 저작일
- 2020.04
- 11페이지/
어도비 PDF
- 가격 1,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
목차
1. 과제 목표
2. 설계
3. 결과 보고
4. 자료구조 및 알고리즘 분석
5. 전체 코드
본문내용
1. 과제 목표
- Linked List로 구현된 Stack를 이용하여 Infix로 주어진 수식을 Postfix로 변환한다.
2. 설계
- 이번 과제는 주어진 텍스트 파일에서 Infix 방식으로 표기된 수식을 읽어 들인 후, Postfix로 출력하는 과제였습니다. 추가로 고려해야 했던 점은, 해당 알고리즘에서 스택 구조를 사용하게 되는데, 과제의 요구사항에 따라 링크드 리스트 방식으로 스택을 구현해 알고리즘에 적용해야 했던 점이었습니다. 두 가지 알고리즘이 각각 강의자료의 다른 챕터 상에 존재했으므로 이를 여러 번 읽어본 후 알맞게 코드 상에 적용하여 구현할 수 있었습니다.
3. 결과 보고
- Input으로 주어진 expr.txt의 정보를 입력으로 사용한 결과입니다.
먼저 스택을 링크드 리스트 형태로 구현하기 위해서, 노드와 노드 포인터의 형태를 각각 선언하였습니다. 또한 노드 내부의 링크 외의 가지는 값은 미리 열거형으로 선언한 precedence 타입의 멤버 변수가 되도록 하였습니다.
expr은 rExpr() 함수를 통해 expr.txt에서 읽어들인 Infix 수식이 저장될 char 배열입니다. 그 아래의 isp와 icp 배열은 아까 precedence 타입으로 선언한 열거형 안의 연산자들의 우선순위를 숫자로 나타낸 배열인데, isp가 스택 안에 있는 요소일 때의 우선순위, icp가 입력되어 비교되는 요소일 때의 우선순위를 가리킵니다. 두 배열은 postfix() 함수 내의 반복에서 활용됩니다.
rExpr()함수는 expr.txt에서 Infix 수식을 읽어들이는 함수입니다. 특별한 부분은 없으나, 맨 마지막의 i – 1번째 값을 ‘ ‘로 저장하는 부분이 있는데, 이 부분은 수식의 끝을 나타내는 해당 문자가 getToken() 함수를 통해 eos로 변환되어 적용되도록 하기 위함입니다.
참고 자료
없음