infix to postfix conversion using stack in c++ code example
Example 1: infix to postfix program in c++
/*https://github.com/Sudhanshu1304/Stack-Application*/
#include
#include
using namespace std;
class Stack{
private:
char A[5];
int Size;
public:
int top;
Stack(){
top=-1;
Size=sizeof(A)/sizeof(char);
}
bool IsFull(){
if(top==Size-1){
return true;
}
else{
return false;
}
}
bool IsEmpty(){
if(top==-1){
return true;
}
else{
return false;
}
}
char peek(){
return A[top];
}
void Push(char val){
if (IsFull()==false){
top++;
A[top]=val;
}
else{
cout<<"\nThe Stack is Full"<=6){
return i+i;
}
else{
return i+i+0;
}
}
else if(CHAR[i][1]==A){
if(i+i>=6){
return i+i;
}
else{
return i+i+1;
}
}
}
return -1;
}
void Display(char ch,string vari, Stack &s){
int Size=s.top+1;
cout<<"\n "<>exp;
string out="";
cout<<"\n\nExpression Stack Postfix\n"<=3){
while(Search(STACK.peek())>2){
char val=STACK.Pop();
out=out+val;
Display(temp,out,STACK);
}
STACK.Pop();
Display(temp,out,STACK);
}
/* Search Precedence*/
else{
if (Search(temp)>=0 && Search(temp)<=2){
STACK.Push(temp);
Display(temp,out,STACK);
}
/* If TOP < Temp */
else if(Search(STACK.peek())=ab){
char val=STACK.Pop();
out=out+val;
Display(temp,out,STACK);
}
STACK.Push(temp);
Display(temp,out,STACK);
}
}
}
/* If an Alphabet */
else{
out=out+temp;
Display(temp,out,STACK);
}
}
while(STACK.IsEmpty()==false){
char val=STACK.Pop();
out=out+val;
Display(temp,out,STACK);
}
cout<<"\n\nFINAL STRING : "<
Example 2: python postfix conversion
"""
Author : ITVoyagers (itvoyagers.in)
Date :31st October 2019
Description : Program to show use of stack in infix to postfix conversion using python.
"""
class infix_to_postfix:
precedence={'^':5,'*':4,'/':4,'+':3,'-':3,'(':2,')':1}
def __init__(self):
self.items=[]
self.size=-1
def push(self,value):
self.items.append(value)
self.size+=1
def pop(self):
if self.isempty():
return 0
else:
self.size-=1
return self.items.pop()
def isempty(self):
if(self.size==-1):
return True
else:
return False
def seek(self):
if self.isempty():
return false
else:
return self.items[self.size]
def isOperand(self,i):
if i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
return True
else:
return False
def infixtopostfix (self,expr):
postfix=""
print('postfix expression after every iteration is:')
for i in expr:
if(len(expr)%2==0):
print("Incorrect infix expr")
return False
elif(self.isOperand(i)):
postfix +=i
elif(i in '+-*/^'):
while(len(self.items)and self.precedence[i]<=self.precedence[self.seek()]):
postfix+=self.pop()
self.push(i)
elif i is '(':
self.push(i)
elif i is ')':
o=self.pop()
while o!='(':
postfix +=o
o=self.pop()
print(postfix)
#end of for
while len(self.items):
if(self.seek()=='('):
self.pop()
else:
postfix+=self.pop()
return postfix
s=infix_to_postfix()
expr=input('enter the expression ')
result=s.infixtopostfix(expr)
if (result!=False):
print("the postfix expr of :",expr,"is",result)