Tuesday 9 September 2014

C++ program to convert prefix to postfix expression

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;
}

No comments:

Post a Comment