this is a code to convert infix string to postfix......
but i am having some problems please help me:(
[#include
#include
#include
#include
int presidence( );
void infixToPostfix(char *);
template
class Stack
{
private:
T *data;
int capacity;
int top;
public:
Stack();
Stack(int );
T pop();
void push(T);
int isEmpty();
int isFull();
int getTop();
~Stack();
void display()
{
for(int i = 0 ; i < top ; i++)
cout<<" " <
Stack ::Stack()
{
capacity=0;
top=0;
}
template
Stack::Stack(int s=5)
{
capacity=s;
data=new T[capacity];
top=0;
}
template
int Stack:: isEmpty()
{
return (top==0);
}
template
int Stack :: isFull()
{
return (top==capacity);
}
template
void Stack:: push(T p)
{
if(isFull())
{
return;
}
else
{
data[top]=p;
top++;
}
}
template
T Stack:: pop()
{
/* if(isEmpty())
exit(0);
else
{*/
top--;
return data[top];
// }
}
template
Stack::~Stack()
{
if(data!=NULL)
{
delete[] data;
data=0;
}
}
template
int Stack::getTop()
{
return top;
}
int presidence(char A,char B)
{
if(A=='+' && B=='-' || A=='*' && B=='/')
{
return 1;
}
if(A=='-' && B=='+' || A=='/' && B=='*')
return 1;
if(A=='+' && B=='*' || B=='-'||A=='/' && B=='+' ||A=='/' && B=='-')
{
return 1;
}
if(A=='*' && B=='+' || A=='*' && B=='-')
return 0;
return 0;
}
void infixToPostfix(char *infix)
{
int len=strlen(infix);
char postfix[20];
Stack P(len+1);
int pi = 0;
for(int i=0;infix[i]!='\0';i++)
{
if(infix[i]>='A' && infix[i]<='Z')
{
postfix[pi]=infix[i];
pi++;
}
if(infix[i]=='+' ||infix[i]=='-'||infix[i]=='*'||infix[i]=='/')
{
if(P.isEmpty() || infix[i-1]=='(')
{
P.push(infix[i]);
}
else if(!P.isEmpty() || infix[i-1]!='(')
{
int no=presidence(infix[i],P.pop());
while(!P.isEmpty() && no==1)
{
postfix[pi]=P.pop();
pi++;
}
P.push(infix[i]);
if(infix[i]!=')')
{
P.push(infix[i]);
}
else if(infix[i]==')')
{
while(P.pop()!='(')
{
postfix[pi]=P.pop();
pi++;
}
}
}
}
}
for(int i=pi;!P.isEmpty() && i<=len;i++)
{
postfix[i]=P.pop();
}
for(int j=0;j<=pi;j++)
cout<<" "<