Infix 2 Postfix
It converts infix equation to postfix or reverse polish notation
AI
Shrnutí AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.
Zdrojový kód
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define MAX 50
int Stack[MAX];
int Top = 0;
void push (int x)
{
if (Top<MAX)
Stack[Top++] = x;
}
int pop (void)
{
if (Top>0)
return Stack[--Top];
return MAX;
}
void get_infix (char *infix)
{
printf("\nEnter infix notation(max:%d\)->", MAX);
scanf("%s",infix);
}
infix_2_postfix(char *infix, char *postfix)
{
while (*infix) {
switch (*infix) {
case '+':
case '*':
push (*infix);
break;
case '(':
break;
case ')':
*postfix = (char) pop();
postfix++;
break;
default:
*postfix = *infix;
postfix++;
break;
}
infix++;
}
while (Top) {
*postfix = (char) pop();
postfix++;
}
*postfix = '\0';
}
int eval (char *postfix)
{
int ans = 0;
while (*postfix) {
switch (*postfix) {
case '+': ans = (pop()-48) + (pop()-48); push(ans+48);
break;
case '*': ans = (pop()-48) * (pop()-48); push(ans+48);
break;
default:
push(*postfix);
break;
}
postfix++;
}
return ans;
}
void main(void)
{
int i;
char infix[MAX], postfix[MAX];
get_infix(infix);
infix_2_postfix(infix, postfix);
printf("\n %s %s = %d", infix, postfix, eval(postfix));
}
Původní komentáře (3)
Obnoveno z Wayback Machine