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