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