数据结构实验之栈二:一般算术表达式转换成后缀式

来源:互联网 发布:mac添加dock 编辑:程序博客网 时间:2024/05/31 13:16

数据结构实验之栈二:一般算术表达式转换成后缀式
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Example Input

a*b+(c-d/e)*f#

Example Output

ab*cde/-f*+

    #include <stdio.h>    #include <string.h>    int yx(char c);    int main()    {        int x=0;        char a[1000],c;        while(~scanf("%c",&c)&&c!='#')        {            if(c>='a'&&c<='z')                printf("%c",c);            else            {                if(x==0)                {                    a[++x]=c;                }                else if(yx(c)>yx(a[x]))                {                    if(yx(c)==4)                    {                        while(a[x]!='(')                        {                            printf("%c",a[x--]);                        }                        x--;                    }                    else                    {                        a[++x]=c;                    }                }                else                {                    if(a[x]!='(')                    {                        printf("%c",a[x]);                        a[x]=c;                    }                    else                    {                        a[++x]=c;                    }                }            }        }            while(x)            {                printf("%c",a[x--]);            }            printf("\n");        return 0;    }    int yx(char c)    {        if(c=='+'||c=='-')            return 1;        if(c=='*'||c=='/')            return 2;        if(c=='(')            return 3;        if(c==')')            return 4;            return 0;    }
0 0
原创粉丝点击