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

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

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。

输入

输入一个算术表达式,以‘#’字符作为结束标志。

输出

输出该表达式转换所得到的后缀式。

示例输入

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

示例输出

ab*cde/-f*+

提示

 

来源

 

示例程序

 
#include<stdio.h>  
 int switc(char c)  
 {  
     if(c=='+'||c=='-') return 1;  
     if(c=='*'||c=='/')  return 2;  
     if(c=='(') return 3;  
     if(c==')') return 4;  
 }  
 int main()  
 {  
     int top=0;  
     char c,b[100];  
     while(scanf("%c", &c),c!='#')  
     {  
         if(c>='a'&&c<='z')  
         {  
             printf("%c",c);  
         }  
         else  
         {  
             if(top==0)  
             {  
                 top++;  
                 b[top] = c;  
             }  
             else  
                 if(switc(c)>=switc(b[top]))  
                 {  
                     if(switc(c) == 4)  
                     {  
                         while(b[top]!='(')  
                         {  
                             printf("%c",b[top--]);  
                         }  
                         top--;  
                     }  
                     else  
                         {  
                             top++;  
                             b[top] = c;  
                         }  
                 }  
                 else  
                 {  
                     if(b[top]!='(')  
                     {  
                         printf("%c", b[top]);  
                         b[top] = c;  
                     }  
                     else  
                     {  
                         top++;  
                         b[top] = c;  
                     }  
                 }  
  
         }  
  
     }  
     while(top!=0)  
     {  
         printf("%c",b[top]);  
         top--;  
     }  
     printf("\n");return 0;  
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值