Este team redactor ha estado mucho tiempo buscando para darle resolución a tus preguntas, te dejamos la resolución de modo que esperamos serte de gran ayuda.
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;
Puedes añadir valor a nuestra información participando con tu experiencia en las notas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)