반응형
    
    
    
  오랜만에 C 연습 좀 해봅싀당
중위 표기법과 후위 표기법
1. 개념 1-1. 중위 표기법이란? 1-2. 후위 표기법이란? 2. 중위 표기식을 후위 표기식으로 바꾸는 법 2-1. 괄호가 없는 경우 2-2. 괄호가 있는 경우 3. 계산 3-1. 후위 표기식을 사칙연산하는 법 1. 개념 1-
todaycode.tistory.com
후위 표기법 규칙에 대한 건 윗 블로그를 보며 복습했슴다!
일단 괄호 없이 동작하는 후위 연산자 변환 프로그램 만들어봅니다
/*
괄호 없을 때 중위 연산자 입력받아서 후위 연산자로 출력해주는 프로그램
*/
#include <stdio.h>
#include <stdbool.h>
#define STACKSIZE 10
int top = -1;
bool isEmpty(void)
{
	return top == -1;
}
bool isFull(void)
{
	return top == STACKSIZE - 1;
}
void push(char* stack, char data)
{
	if (!isFull())
	{
		stack[++top] = data;
		printf("top:%d->data:%d\n", top, stack[top]);
	}
	else
	{
		printf("Full\n");
	}
}
char pop(char* stack)
{
	if (!isEmpty())
	{
		return stack[top--];
	}
	else
	{
		printf("Empty\n");
	}
}
char peek(char* stack)
{
	if (!isEmpty())
	{
		return stack[top];
	}
	else
	{
		printf("Empty\n");
	}
}
int operatorPriority(char op)
{
	if (op == '+' || op == '-')
		return 2;
	else if (op == '*' || op == '/')
		return 1;
	else if (op == '(' || op == ')')
		return 0;
	else
		return -1;
}
void convertPostfix(char* midfix, char* postfix)
{
	char opStack[10] = { 0 };
	int postfix_pointer = 0;
	int i = 0;
	//for (size_t i = 0; i < sizeof(midfix); i++)
	while (midfix[i] != '\0')
	{
		if (midfix[i] > 0x30 && midfix[i] < 0x39) {
			postfix[postfix_pointer++] = midfix[i];
		}
		else
		{
			if (isEmpty())
			{
				push(opStack, midfix[i]);
			}
			else
			{
				while (operatorPriority(peek(opStack)) < operatorPriority(midfix[i]))
				{
					postfix[postfix_pointer++] = pop(opStack);
				}
				if (operatorPriority(peek(opStack)) > operatorPriority(midfix[i]))
				{
					push(opStack, midfix[i]);
				}
			}
		}
		i++;
	}
	while (!isEmpty(opStack))
	{
		postfix[postfix_pointer++] = pop(opStack);
	}
}
int main(void)
{
	char midfix[30] = { '2','+' ,'5','*','3' };
	char postfix[30] = { 0 };
	printf("midfix: %s\n", midfix);
	convertPostfix(midfix, postfix);
	printf("postfix: %s\n", postfix);
	return 0;
}

괄호 포함한 후위연산식 변환은 다음 글에..
[C] 중위연산식 후위연산식으로 바꾸기 2
[C] 중위연산식 후위연산식으로 바꾸기 1 오랜만에 C 연습 좀 해봅싀당 중위 표기법과 후위 표기법 1. 개념 1-1. 중위 표기법이란? 1-2. 후위 표기법이란? 2. 중위 표기식을 후위 표기식으로 바꾸는
program-developers-story.tistory.com
반응형
    
    
    
  'C Programming' 카테고리의 다른 글
| [C Programming] Stack (0) | 2024.03.14 | 
|---|---|
| [C] 중위연산식 후위연산식으로 바꾸기 2 (0) | 2024.03.03 | 
| [Linux] C 프로그램의 빌드 과정 살펴보기 (1) | 2024.02.08 | 
| [C] C언어는 왜 쓰는가? (0) | 2024.02.02 | 
| [C]아스키코드를 이용하여 알파벳을 입력받고 10진수로 변환출력 (1) | 2023.10.23 | 
 
                    
                   
                    
                   
                    
                  