본문 바로가기

프로그래밍 언어들/알고리즘 문제풀이

20141124_스택(stack)을 이용한 수식의 중위 -> 후위 표기법 변환

자료구조의 종류 중 하나인 스택(stack)을 이용하여


수식을 중위 표기법에서 후위 표기법으로 변환하는 프로그램입니다.




#include <stdio.h>

#include <malloc.h>


typedef struct node{

char data;

struct node *pre;

}NODE;


NODE* createNode(char data)

{

NODE *temp = (NODE*)malloc(sizeof(NODE));

temp->data = data;

temp->pre = NULL;


return temp;

}


char pop(NODE **top)

{

NODE *temp = *top;

char t;


if(*top == NULL)

return 0;


*top = (*top)->pre;


t = temp->data;


free(temp);


return t;

}


void push(NODE **top, char data)

{

NODE *temp = createNode(data);


if(*top == NULL)

{

*top = temp;

return;

}

temp->pre = *top;

*top = temp;

}


void printCalc(NODE **top, char *input)

{

int i = 0;


for(i = 0 ; i < strlen(input) ; i ++)

{

switch(input[i])

{

case '*':

case '-':

case '/':

case '+':

push(top, input[i]);

break;


case ')':

printf("%c", pop(top));

break;


case '(':

break;


default :

printf("%c", input[i]);

}

}

}


int main(void)

{

NODE *TOP = NULL;

char input[20];


scanf("%s", input);


printCalc(&TOP, input);

return 0;

}



아래는 실행 결과입니다.