제5장 트리 - 명제식
- 최초 등록일
- 2006.09.29
- 최종 저작일
- 2006.08
- 압축파일
- 가격 3,000원
소개글
제5장 연습문제 풀이
4.[프로그래밍 과제] 명제 해석의 명제식을 표현하는 방법을 고안하고 그러한 식을 입력하여 이진 트리를 생성하는 C 함수를 작성하라. 또한 작성된 함수의 계산 시간을 구하라.
표현방법 :
논리합 : U 혹은 u
논리곱 : ^
참 : 1
거짓 : 0
논리부정 : -
괄호 : ( 와 )
변환 방법 1.
1. 명제식을 입력받는다.
2. 그 명제식을 노드로 변환한다.(소스 참조)
3. 후위 표현으로 변환한다.
4. 그것을 트리로 변환한다.
변환 방법 2.
5.13 추가 연습문제 2번 List Tree 프로젝트 참조하세요.
1) line by line으로 자세하게 주석이 달려 있습니다.
컴파일 실행환경
vc++ 6.0
본문내용
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FALSE 0
#define TRUE 1
#define MAX_STACK_SIZE 100 // 최대 스택 사이즈
#define MAX_EXPR_SIZE 100 // 수식 최대 사이즈
// 부울 및 논리연산
typedef enum { false , true , and , or , rparen ,not, lparen ,eos } logical;
typedef struct _NODE* PNODE; // 노드포인터
typedef struct _NODE{ // 노드 구조체
PNODE left_child; // 왼쪽 자식 노드
logical data; // 데이터
short value; // 명제식 계산시 그 결과값이 들어간다.
PNODE right_child; // 오른쪽 자식 노드
} NODE ;
//////////////////////////////////////////////////////////////////////////
// Global Variable.
PNODE expr[MAX_EXPR_SIZE]; // 수식을 저장하는 문자배열.
PNODE stack[MAX_STACK_SIZE]; // 수식에 대한 스택
PNODE expr_post[MAX_EXPR_SIZE] = {0,}; // 후위 표기식으로 저장하는 문자열.
PNODE root = NULL; // 명제식의 루트 포인터.
// in-stack precedence
const int isp[] = { 0,0,2,3,4,5,0,0 };
// incoming precedence
const int icp[] = { 0,0,2,3,4,5,6,0 };
/************************************************************************
* Function Prototype Declaration.
*************************************************************************/
// 스택 푸쉬.
void stack_push( int* top , PNODE item );
PNODE stack_pop( int* top ); // 스택 팝
압축파일 내 파일목록
Problem_04_Propositional/
Problem_04_Propositional/Problem_04_Propositional.dsp
Problem_04_Propositional/Problem_04_Propositional.dsw
Problem_04_Propositional/Problem_04_Propositional.ncb
Problem_04_Propositional/Problem_04_Propositional.opt
Problem_04_Propositional/propositional_calculus.c
참고 자료
없음