数据结构实验之栈二:一般算术表达式转换成后缀式
2013-06-24 01:29
375 查看
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。输入
输入一个算术表达式,以‘#’字符作为结束标志。输出
输出该表达式转换所得到的后缀式。示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
#include<stdio.h> #include<string.h> int main() { char s[101],st[101]; int top; top = -1; scanf("%s",s); for(int i = 0; s[i]!= '#'; i++) { if(s[i] >= 'a' && s[i] <= 'z') printf("%c",s[i]);//数字直接输出 else if(s[i] == '(') st[++top] = s[i];//左括号直接进栈 else if(s[i] == ')') { while(st[top] != '(') { printf("%c",st[top]); top--; } top--; }//将栈中元素输出直到遇到左括号,再将左括号出栈 else if(s[i] == '+' || s[i] == '-') { while(top != -1 && st[top] != '(') { printf("%c",st[top]); top--; } st[++top] = s[i];将左括号之后的输出后再将是s[i]进栈。 } else if(s[i] == '*' || s[i] == '/') { while(top != -1 && st[top] != '('&&(st[top] == '*'||st[top] == '/')) { printf("%c",st[top]); top--; } st[++top] = s[i]; } } while(top != -1) { printf("%c",st[top]); top--; }最后将栈中元素全部出栈 printf("\n"); return 0; }
View Code
相关文章推荐
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式 SDUT 2132