Here is a C++ program to convert prefix expression to postfix expression using stack. .
C++ program to convert prefix to postfix
#include<iostream>
#include<string.h>
using namespace std;
class postfix
{
char pre[30],stac[30][10];
int top;
public:
postfix()
{
top=-1;
for(int i=0;i<30;i++)
for(int y=0;y<10;y++)
stac[i][y]=0;
}
void convert()
{
strrev(pre);
for(int i=0;pre[i]!=0;i++)
{
if(pre[i]>='a'&pre[i]<='z')
{
stac[++top][0]=pre[i];
}
else
{
int len1=strlen(stac[top-1]);
int len2=strlen(stac[top]);
for(int y=len1-1;y>=0;y--)
stac[top-1][y+len2]=stac[top-1][y];
stac[top-1][len1+len2]=pre[i];
for(int y=0;y<len2;y++)
{
stac[top-1][y]=stac[top][y];
stac[top][y]=0;
}
top--;
}
}
}
void show()
{
cout<<"Postfix expression : ";
for(int i=0;stac[0][i]!=0;i++)
cout<<stac[0][i];
}
void getdata()
{
cout<<"Enter Prefix expression : ";
cin.getline(pre,30);
}
};
int main()
{
postfix con;
con.getdata();
con.convert();
con.show();
return 0;
}
#include<string.h>
using namespace std;
class postfix
{
char pre[30],stac[30][10];
int top;
public:
postfix()
{
top=-1;
for(int i=0;i<30;i++)
for(int y=0;y<10;y++)
stac[i][y]=0;
}
void convert()
{
strrev(pre);
for(int i=0;pre[i]!=0;i++)
{
if(pre[i]>='a'&pre[i]<='z')
{
stac[++top][0]=pre[i];
}
else
{
int len1=strlen(stac[top-1]);
int len2=strlen(stac[top]);
for(int y=len1-1;y>=0;y--)
stac[top-1][y+len2]=stac[top-1][y];
stac[top-1][len1+len2]=pre[i];
for(int y=0;y<len2;y++)
{
stac[top-1][y]=stac[top][y];
stac[top][y]=0;
}
top--;
}
}
}
void show()
{
cout<<"Postfix expression : ";
for(int i=0;stac[0][i]!=0;i++)
cout<<stac[0][i];
}
void getdata()
{
cout<<"Enter Prefix expression : ";
cin.getline(pre,30);
}
};
int main()
{
postfix con;
con.getdata();
con.convert();
con.show();
return 0;
}
No comments:
Post a Comment