#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
int top=-1;
int top_post = -1;
void push(char symbol);
char pop();
char stack[SIZE],infix[SIZE],post[SIZE],a;
int precedence(char symbol)
{
switch (symbol)
{
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
default:
return -1;
}
}
int highest_precedence()
{
int high = 0;
for (int i = top; i >= 0; i--)
{
char symbol = stack[i];
if (symbol == '(')
break;
int now = precedence(symbol);
if (now != -1)
{
if (now > high)
{
high = now;
}
}
}
return high;
}
void push(char symbol)
{
if(top>=SIZE-1)
{
}
else
{
top++;
stack[top]=symbol;
}
}
char pop()
{
if (top<0)
else
{
top--;
return stack[top+1];
}
}
void append(char symbol)
{
if(top>=SIZE-1)
{
}
else
{
top_post++;
post[top_post]=symbol;
}
}
int main()
{
char del;
for (int i=0;i<len;i++)
{
char symbol=infix[i];
switch (symbol)
{
case '+':
case '-':
case '*':
case '/':
case '^':
if (top != -1 && highest_precedence()>=precedence(symbol))// checks if the current symbol being scanned has the highest precedence
{
append(pop());// prints to postfix
}
push(symbol);// pushes to stack
break;
case '(':
push(symbol);
break;
case ')':
while((del = pop()) != '(') //pops all elements and prints them until '(' is encountered.
append(del);
break;
default:
append(symbol);
}
}
while(top!=-1)
append(pop());
append('\0');
for(int i=0;i<top_post;i++)
{
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgojZGVmaW5lIFNJWkUgNTAKaW50IHRvcD0tMTsKaW50IHRvcF9wb3N0ID0gLTE7CnZvaWQgcHVzaChjaGFyIHN5bWJvbCk7CmNoYXIgcG9wKCk7CmNoYXIgc3RhY2tbU0laRV0saW5maXhbU0laRV0scG9zdFtTSVpFXSxhOwppbnQgcHJlY2VkZW5jZShjaGFyIHN5bWJvbCkKewogICAgc3dpdGNoIChzeW1ib2wpCiAgICB7CiAgICBjYXNlICcrJzoKICAgIGNhc2UgJy0nOgogICAgICAgIHJldHVybiAxOwoKICAgIGNhc2UgJyonOgogICAgY2FzZSAnLyc6CiAgICAgICAgcmV0dXJuIDI7CgogICAgY2FzZSAnXic6CiAgICAgICAgcmV0dXJuIDM7CiAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiAtMTsKICAgIH0KfQppbnQgaGlnaGVzdF9wcmVjZWRlbmNlKCkKewogICAgaW50IGhpZ2ggPSAwOwogICAgZm9yIChpbnQgaSA9IHRvcDsgaSA+PSAwOyBpLS0pCiAgICB7CiAgICAgICAgY2hhciBzeW1ib2wgPSBzdGFja1tpXTsKICAgICAgICBpZiAoc3ltYm9sID09ICcoJykKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgaW50IG5vdyA9IHByZWNlZGVuY2Uoc3ltYm9sKTsKCiAgICAgICAgaWYgKG5vdyAhPSAtMSkKICAgICAgICB7CgogICAgICAgICAgICBpZiAobm93ID4gaGlnaCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaGlnaCA9IG5vdzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBoaWdoOwp9Cgp2b2lkIHB1c2goY2hhciBzeW1ib2wpCnsKICAgIGlmKHRvcD49U0laRS0xKQogICAgewogICAgICAgIHByaW50Zigib3ZlcmZsb3ciKTsKICAgICAgICBleGl0KDEpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHRvcCsrOwogICAgICAgIHN0YWNrW3RvcF09c3ltYm9sOwogICAgfQp9CmNoYXIgcG9wKCkKewogICAgaWYgKHRvcDwwKQogICAgICAgIHByaW50ZigidW5kZXJmbG93XG4iKTsKICAgIGVsc2UgCiAgICB7CiAgICAgICAgdG9wLS07CiAgICAgICAgcmV0dXJuIHN0YWNrW3RvcCsxXTsKICAgIH0KfQp2b2lkIGFwcGVuZChjaGFyIHN5bWJvbCkKewogICAgaWYodG9wPj1TSVpFLTEpCiAgICB7CiAgICAgICAgcHJpbnRmKCJvdmVyZmxvd1xuIik7CiAgICAgICAgZXhpdCgxKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICB0b3BfcG9zdCsrOwogICAgICAgIHBvc3RbdG9wX3Bvc3RdPXN5bWJvbDsKICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGNoYXIgZGVsOwogICAgZ2V0cyhpbmZpeCk7CiAgICBpbnQgbGVuPXN0cmxlbihpbmZpeCk7CiAgICAKICAgIGZvciAoaW50IGk9MDtpPGxlbjtpKyspCiAgICAgICAgewogICAgICAgICAgICBjaGFyIHN5bWJvbD1pbmZpeFtpXTsKICAgICAgICAgICAgc3dpdGNoIChzeW1ib2wpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgY2FzZSAnKyc6CiAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICBjYXNlICcqJzoKICAgICAgICAgICAgY2FzZSAnLyc6CiAgICAgICAgICAgIGNhc2UgJ14nOgogICAgICAgICAgICAgICAgICAgIGlmICh0b3AgIT0gLTEgJiYgaGlnaGVzdF9wcmVjZWRlbmNlKCk+PXByZWNlZGVuY2Uoc3ltYm9sKSkvLyBjaGVja3MgaWYgdGhlIGN1cnJlbnQgc3ltYm9sIGJlaW5nIHNjYW5uZWQgaGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChwb3AoKSk7Ly8gIHByaW50cyB0byBwb3N0Zml4CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHB1c2goc3ltYm9sKTsvLyBwdXNoZXMgdG8gc3RhY2sKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICcoJzoKICAgICAgICAgICAgICAgICAgICBwdXNoKHN5bWJvbCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJyknOgogICAgICAgICAgICAgICAgICAgIHdoaWxlKChkZWwgPSBwb3AoKSkgIT0gJygnKSAvL3BvcHMgYWxsIGVsZW1lbnRzIGFuZCBwcmludHMgdGhlbSB1bnRpbCAnKCcgaXMgZW5jb3VudGVyZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChkZWwpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgYXBwZW5kKHN5bWJvbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB3aGlsZSh0b3AhPS0xKQogICAgICAgIGFwcGVuZChwb3AoKSk7CiAgICBhcHBlbmQoJ1wwJyk7CiAgICBmb3IoaW50IGk9MDtpPHRvcF9wb3N0O2krKykKICAgICAgICB7CiAgICAgICAgcHJpbnRmKCIlYyAgIixwb3N0W2ldKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIHJldHVybiAwOwp9