[C언어] 수식나무를 이용한 후위식 계산기

이미지
준비중입니다.
※ 미리보기 이미지는 최대 20페이지까지만 지원합니다.
  • 분야
  • 등록일
  • 페이지/형식
  • 구매가격
  • 적립금
자료 다운로드  네이버 로그인
소개글
[C언어] 수식나무를 이용한 후위식 계산기에 대한 자료입니다.
목차
#define MAX 10 /*최대 숫자크기*/
#define MAXEXP 100 /*식의 최대 크기*/

typedef struct _stack *stptr; // 스택 선언
typedef struct _node *nodeptr; // 트리의 노드 선언

typedef struct _node { // 트리의 노드
char exp[MAX]; // 노드의 데이터
nodeptr LeftChild; // 왼쪽 자식
nodeptr RightChild; // 오른쪽 자식
}node;

typedef struct _stack {
node *key; // 스택의 키
stptr next; // 스택의 포인터
}stack;

stack *head, *tail; // 스택의 헤드 및 테일

void Get_postfix(char *s); // 후위식을 받아오는 함수.
node *Get_parsetree(char *p); // 수식나무를 생성하는 함수.
void printf_infix(node *t); // 수식나무를 통해 중위식을 출력하는 함수.
void Push_parenthesis(); // 중위식 출력때 쓰일 괄호를 스택에 넣어주는 함수.
void visit(char *s); // 노드를 방문하는 함수.

int is_operator(int k); // 연산자를 확인하는 함수.
int precedence(int op); // 우선순위를 확인하는 함수.
void init_stack(); // 스택을 생성하는 함수.
node *push(node *k); // 스택에 데이터를 넣는 함수.
node *pop(); // 스택의 데이터를 빼는 함수.

int Check_exp(char *s); // 후위식이 올바른지 확인하는 함수.
int is_legal(char *s); // 후위식의 형식이 올바른지 확인하는 함수.
본문내용
int main()
{
node *tree, *p; // 수식트리를 생성할 변수 및 스택 버퍼.
char exp[MAXEXP]; // 후위식을 받아올 변수

tree = (node *)malloc(sizeof(node));
init_stack();

printf("\nInput a postfix expression : ");
Get_postfix(exp); // 후위식 받아옴.
tree = Get_parsetree(exp); // 트리를 생성.
printf("\nThe infix expression : ");
while((pop()) != NULL); // 스택 정리.
printf_infix(tree); // 중위식 출력.
while((p = pop()) != NULL) printf("%c", p->exp[0]);
printf("\n\n");
}

void Get_postfix(char *s)
{
///////////////////////////////////////////////////////////////////////////
/*파라미터로 받아온 문자열 변수에 후위식을 받아오는 함수. scanf를 이용하여/
/ 후위식을 받아온 후 check_exp함수를 이용하여 형식이 올바른지 검사한다. */
///////////////////////////////////////////////////////////////////////////

char temp;

while(1){
int i = 0;
while(1){ // 후위식을 받아오는 부분.
scanf("%c", &temp);
if(temp != '\n') { s[i++] = temp;}
else { s[i] = 0; break; }
}
if(Check_exp(s)) break; // 형식이 올바르면 함수 종료.
else { // 올바르지 않은 형식이 입력된 경우 다시 받아온다.
printf("wrong command. try again.\n");
printf("\nInput a postfix expression : ");
}
}

}
오늘 본 자료
더보기
  • 오늘 본 자료가 없습니다.
해당 정보 및 게시물의 저작권과 기타 법적 책임은 자료 등록자에게 있습니다. 위 정보 및 게시물 내용의 불법적 이용,무단 전재·배포는 금지되어 있습니다. 저작권침해, 명예훼손 등 분쟁요소 발견 시 고객센터에 신고해 주시기 바랍니다.