Por fin después de tanto trabajar pudimos encontrar la solución de esta contratiempo que agunos usuarios de este sitio web han presentado. Si deseas compartir alguna información no dejes de compartir tu comentario.
Ejemplo: programa de infijo a postfijo en c ++
/*https://github.com/Sudhanshu1304/Stack-Application*/#include #include usingnamespace std;classStackprivate:char A[5];int Size;public:int top;Stack()
top=-1;
Size=sizeof(A)/sizeof(char);boolIsFull()if(top==Size-1)returntrue;elsereturnfalse;boolIsEmpty()if(top==-1)returntrue;elsereturnfalse;charpeek()return A[top];voidPush(char val)if(IsFull()==false)
top++;
A[top]=val;else
cout<<"nThe Stack is Full"<<endl;charPop()if(IsEmpty()==false)char temp=A[top];
A[top]='0';
top--;return temp;elsereturn'-1';voidShow_Stack()for(int i=0;i<top+1;i++)
cout<<A[i];;intSearch(char A)
string CHAR[]="([",")","]","+-","*/","^$";int Size=(sizeof(CHAR)/sizeof(string));for(int i=0;i<Size;i++)if(A==CHAR[i][0])if(i+i>=6)return i+i;elsereturn i+i+0;elseif(CHAR[i][1]==A)if(i+i>=6)return i+i;elsereturn i+i+1;return-1;voidDisplay(char ch,string vari, Stack &s)int Size=s.top+1;
cout<<"n "<<ch<<" ";
s.Show_Stack();for(int i=0;i<10-Size;i++)
cout<<" ";
cout<<vari<<endl;intmain()
Stack STACK;char temp;
string exp;//"A+B*C";
cout<<"Enter Your Expression :";
cin>>exp;
string out="";
cout<<"nnExpression Stack Postfixn"<<endl;for(int i=0;i<exp.size();i++)
temp=exp[i];int ab=Search(temp);if(ab!=-1)/* If We ENCOUNTER CLOSING BRACKETS*/if(ab<=5&& ab>=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*/elseif(Search(temp)>=0&&Search(temp)<=2)
STACK.Push(temp);Display(temp,out,STACK);/* If TOP < Temp */elseif(Search(STACK.peek())<ab)
STACK.Push(temp);Display(temp,out,STACK);else/* if STACK= +,* and temp= + then we have to remove two times */while(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<<"nnFINAL STRING : "<<out<<endl;
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)