码迷,mamicode.com
首页 > 其他好文 > 详细

练习3.20 a 将中缀表达式转换为后缀表达式

时间:2015-07-13 20:02:11      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
//将中缀表达式转换为后缀表达式
int
main()
{
    int MaxSize = 10;
    int str[8]={3,3,2,1,0,1,0,2};
    char tmp;
    PtrToStack s;
    s = CreateStack( MaxSize );
    while(1)
    {
        tmp = getchar();
        if(tmp == \n)
            break;
        if(tmp ==  )
            continue;
        else if(tmp == + || tmp == - || tmp == *
                || tmp == / || tmp == ( || tmp == ))
        {
            if( IsEmpty( s ) )
                Push( tmp, s );
            else
            {
                if( tmp == ) )
                {
                    while( Top(s) != ( )
                    {
                        printf("%c ",Top(s));
                        Pop( s );
                    }
                    Pop( s );
                }
                else
                {
                    while( !IsEmpty(s) && Top(s) != ( && str[ tmp - ( ] <= str[ Top(s) - ( ] )
                    {
                        printf("%c ",Top( s ));
                        Pop( s );
                    }
                    Push( tmp, s );
                }
            }
        }
        else
            printf("%c ",tmp);
    }
    while( !IsEmpty( s ) )
    {
        printf("%c ",Top( s ) );
        Pop( s );
    }
    return 0;
}
View Code

该程序只可以a+b*c等任何式子都可以workout

123+123*321 由于是用getchar()来做的,所以没能做这种式子

 

练习3.20 a 将中缀表达式转换为后缀表达式

标签:

原文地址:http://www.cnblogs.com/gabygoole/p/4643513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!