Saltar al contenido

programa de conversión de infijo a postfijo en ejemplo de código c

Buscamos en distintos espacios y así tenerte la solución a tu problema, si continúas con alguna duda puedes dejar tu comentario y responderemos con mucho gusto.

Ejemplo 1: 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;

Ejemplo 2: conversión de infijo a postfijo

Begin
   initially push some special character say # into the stack
   for each character ch from infix expression,doif ch is alphanumeric character, then
         add ch to postfix expression
      elseif ch = opening parenthesis(, then
         push( into stack
      elseif ch =^, then            //exponential operator of higher precedence
         push ^ into the stack
      elseif ch = closing parenthesis ), then
         while stack is not empty and stack top ≠ (,do pop and add item from stack to postfix expression
         done

         pop( also from the stack
      elsewhile stack is not empty AND precedence of ch <= precedence of stack top element,do
            pop and add into postfix expression
         done

         push the newly coming character.
   done

   while the stack contains some remaining characters,do
      pop and add to the postfix expression
   done
   return postfix
End

Finalizando este artículo puedes encontrar las notas de otros programadores, tú incluso tienes la opción de mostrar el tuyo si lo crees conveniente.

¡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 *