[실습7-1] Post fix
- 최초 등록일
- 2011.11.15
- 최종 저작일
- 2011.06
- 13페이지/ 한컴오피스
- 가격 1,000원
소개글
자료구조
목차
○ 실습 문제 소개
○ 해결 과정 설명
○ 실습 결과
○ 작성자의 코멘트 기재
본문내용
○ 실습 문제 소개
❒ 중위 표기법으로 되어 있는 수식을 입력 받아 스택을 이용하여 후위 표기법으로 변경한다.
❒ 후위 표기법으로 바꾼 수식에 대해 스택을 이용하여 수식의 계산 결과를 구하여 출력한다.
- 각 수식에 대해 입력된 중위 표기법, 변환된 후위 표기법, 계산 결과를 모두 출력한다.
○ 해결 과정 설명
❒ 스택을 이용하여 중위 표기 식을 후위 표기 식으로 바꾸는 방법
- 입력받은 수식에 대해 왼쪽에서 오른쪽으로 char형으로 하나씩 NULL이 나올 때 까지 읽는다.
1. 여는 괄호를 만나면 무시하고 다음문자를 읽는다.
2. 피연산자를 만나면 후위 표기 식을 저장할 공간에 저장한다.
3. 연산자를 만나면 stack 에 push한다.
4. 닫는 괄호를 만나면 stack을 pop하고 후위 표기 식을 저장할 공간에 저장한다.
5. 수식이 끝나면 stack에 연산자가 남았는지 확인하고 남아있으면 pop 하여 저장 공간에 저장
❒ 스택을 이용하여 후위 표기 식을 계산하는 방법
- 입력받은 수식에 대해 왼쪽에서 오른쪽으로 char형으로 하나씩 NULL이 나올 때 까지 읽는다.
1. 피연산자를 만나면 stack에 push 한다.
2. 연산자를 만나면 stack에서 두 개의 피연산자를 pop 하여 연산을 하고, 연산 결과를 stack에 push 한다.
✔ stack에서 pop한 자료 형은 char형이기 때문에 int형태의 숫자로 바꿔준 뒤 연산한다.
✔ 두 자리 수 이상인 경우가 있기 때문에 띄어쓰기로 두 피연산자 사이를 구분한다.
✔ 두 자리 수 이상인 경우에 각 숫자를 배열에 넣고 자리수를 고려하여 10의 n 승을 곱한
값들을 모두 더해 피연산자인 해당 수를 구한다. (n = 자리 수 - 1 즉, 배열의 인덱스 값)
예) 1 3 5 -> 5를 a[0]에 저장, 3을 a[1]에 저장, 1을 a[2]에 저장한 뒤,
스택에 저장된 순서 5 x 100 + 3+ x 101 + 1 x 102 = 135
✔ 연산을 한 뒤 stack에 push하기 위해 int 형의 값들을 각 자리수의 숫자를 char형으로
변환 시켜준 뒤 push한다.
3. 수식이 끝나면, stack에서 최종 결과를 pop하여 출력 한다.
참고 자료
없음