SDUTACM 数据结构实验之栈二:一般算术表达式转换成后缀式
2016-10-06 14:43
417 查看
Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Example Input
a*b+(c-d/e)*f#
Example Output
ab*cde/-f*+
Hint
#include<stdio.h> #include<stdlib.h> #include<string.h> struct hh { int data[10010]; int top; }; void main() { struct hh *l,*x; x=(struct hh *)malloc(sizeof(struct hh)); l=(struct hh *)malloc(sizeof(struct hh)); x->top=-1; l->top=-1; char a[10010]; int n,i; scanf("%s",&a); n=strlen(a); for(i=0;i<n;i++) { if(a[i]=='(') { x->top++; x->data[x->top]=a[i]; } else if(a[i]==')') { while(x->data[x->top]!='(') { l->top++; l->data[l->top]=x->data[x->top]; x->top--; } x->top--; } else if(a[i]=='-'||a[i]=='+') { while(x->data[x->top]=='*'||x->data[x->top]=='/'||x->data[x->top]=='+'||x->data[x->top]=='-') { l->top++; l->data[l->top]=x->data[x->top]; x->top--; } x->top++; x->data[x->top]=a[i]; } else if(a[i]=='*'||a[i]=='/') { while(x->data[x->top]=='*'||x->data[x->top]=='/') { l->top++; l->data[l->top]=x->data[x->top]; x->top--; } x->top++; x->data[x->top]=a[i]; } else if(a[i]=='#') { while(x->top!=-1) { l->top++; l->data[l->top]=x->data[x->top]; x->top--; } } else { l->top++; l->data[l->top]=a[i]; } } for(i=0;i<=l->top;i++) printf("%c",l->data[i]); printf("\n"); }
相关文章推荐
- sdutacm-数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式 SDUT
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 寒假第三天--栈和队列--数据结构实验之栈二:一般算术表达式转换成后缀式
- [SDUT](2132)数据结构实验之栈二:一般算术表达式转换成后缀式 ---栈
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式(手写栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式