자료구조의 종류 중 하나인 스택(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;
}
아래는 실행 결과입니다.
'프로그래밍 언어들 > 알고리즘 문제풀이' 카테고리의 다른 글
C언어 퍼즐 게임 (puzzle game in C), 퍼즐 맞추기 알고리즘 (2) | 2016.10.21 |
---|---|
C언어 BFS 미로 최단경로 구하기(escape the maze in C) (0) | 2016.10.17 |
C언어 DFS 미로 최단경로 구하기(escape the maze in C) (0) | 2016.10.16 |
20141124_스택(stack)을 이용한 수식의 중위 -> 전위 표기법 변환 (0) | 2014.11.24 |