Saltar al contenido

conversión de infijo a sufijo y prefijo usando pila en el ejemplo de código c ++

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#includeusingnamespace 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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *