一般表达式转化为后缀式
来源:互联网 发布:硕鼠官网mac 编辑:程序博客网 时间:2024/04/29 04:32
数据结构实验之栈二:一般算术表达式转换成后缀式
Time Limit: 1000MS Memory limit: 65536K
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
输入
输入一个算术表达式,以‘#’字符作为结束标志。
输出
输出该表达式转换所得到的后缀式。
示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
Time Limit: 1000MS Memory limit: 65536K
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
输入
输入一个算术表达式,以‘#’字符作为结束标志。
输出
输出该表达式转换所得到的后缀式。
示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
# include <stdio.h># include <stdlib.h># define STACK_INIT_SIZE 100# define STACKINCREMENT 10typedef char SelemType;typedef struct{SelemType *base;SelemType *top;int stacksize;} SqStack;void InitStack(SqStack&S);void Push(SqStack&S,SelemType e);void Pop(SqStack&S,SelemType&e);bool StackEmpty(SqStack&S);void GetTop(SqStack&S,SelemType&e);int prority(char op);// 定义相关操作符的优先级/* 中缀转后缀 栈用来存操作符*/int main(){int i=0;char etop,epop;SqStack S;InitStack(S); char str[100];gets(str);while(str[i]!='#'){ //字母直接输出if('a'<=str[i] && str[i]<='z')printf("%c",str[i]);else{ // 栈空进栈if(StackEmpty(S))Push(S,str[i]);else{GetTop(S,etop); // prority(str[i]) pority(etop)if(prority(str[i]) >= prority(etop)) // 1 ) ( */ + -{ // 2 ( */ + - // 是')'将栈中'('之上的操作符输出// 3 */ + -if(prority(str[i]) == 4) // 4 +/ + -{while(etop!='('){Pop(S,epop);printf("%c",epop);GetTop(S,etop);}Pop(S,epop);//弹出'('}else{Push(S,str[i]);}} // prority(str[i]) pority(etop)else // 5 + - */ ({ // 6 */ (if(etop!='('){Pop(S,epop);printf("%c",epop);Push(S,str[i]);}else{Push(S,str[i]);}}}}i++;}GetTop(S,etop);while(!StackEmpty(S)){printf("%c",etop);Pop(S,epop);GetTop(S,etop);}return 0;}void InitStack(SqStack&S){S.base = (SelemType*)malloc(STACK_INIT_SIZE*sizeof(SelemType));if(!S.base){exit(0);}S.top = S.base;S.stacksize = STACK_INIT_SIZE;}void Push(SqStack&S,SelemType e){if(S.top - S.base >= S.stacksize){S.base = (SelemType*)realloc(S.base,(STACK_INIT_SIZE + STACKINCREMENT) * sizeof(SelemType));if(!S.base){exit(0);}S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*S.top = e;S.top++; //*S.top++ = e;}void Pop(SqStack&S,SelemType&e){if(S.top == S.base)return;else{//e = *--S.top;S.top--;e = *S.top;}}bool StackEmpty(SqStack&S){if(S.top == S.base)return true;elsereturn false;}void GetTop(SqStack&S,SelemType&e){if(S.top == S.base)return;elsee = *(S.top-1);}int prority(char c){if(c == '+' || c == '-')return 1;if(c == '*' || c == '/')return 2;if(c == '(')return 3;if(c == ')')return 4;}
0 0
- 一般表达式转化为后缀式
- 中缀转化为后缀表达式
- 表达式字符串转化为后缀表达式格式
- 把中缀表达式转化为后缀表达式
- 用栈将中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 中缀表达式转化为后缀表达式
- 中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 将中缀表达式转化为后缀表达式
- 中缀表达式转化为后缀表达式
- 中缀表达式转化为后缀表达式
- mongodb部署
- Java Annotation —— 注解实战
- 终端下使用gradle编译android应用
- 个人学习_依赖注入与控制反转
- java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.isPresent(Ljava/lang/String;Ljava/l
- 一般表达式转化为后缀式
- 不只是给面试加分 -- Java WeakReference的理解与使用
- Fragment传值的两种方式
- (Sql Server)数据的拆分和合并
- hibernate 配置文件解读
- Ie6-10的差别
- 储油点问题
- 网页设计与架构中的几个SEO优化原则
- solr 自动提示