SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
来源:互联网 发布:更改音乐的软件 编辑:程序博客网 时间:2024/05/22 05:21
数据结构实验之栈二:一般算术表达式转换成后缀式
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
输入
输入一个算术表达式,以‘#’字符作为结束标志。
输出
输出该表达式转换所得到的后缀式。
示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
思路:
1.是否是字母。是则输出
2.否。
(1)是否是栈空。是进栈
(2)否。
<1>是否为 )。是输出直到(。
<2>否。就返回值当前元素是否<栈顶元素&&栈顶元素不为(。是输出栈顶元素&&栈顶元素更新为当前元素。
<3>否。当前元素进栈。
# 结束;
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
输入
输入一个算术表达式,以‘#’字符作为结束标志。
输出
输出该表达式转换所得到的后缀式。
示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
思路:
1.是否是字母。是则输出
2.否。
(1)是否是栈空。是进栈
(2)否。
<1>是否为 )。是输出直到(。
<2>否。就返回值当前元素是否<栈顶元素&&栈顶元素不为(。是输出栈顶元素&&栈顶元素更新为当前元素。
<3>否。当前元素进栈。
# 结束;
输出直到栈空;
#include <stdio.h>#include <string.h>#include <stdlib.h>#define maxsize 51typedef char ElemType;typedef struct{ ElemType *base; ElemType *top; int Length;} SQ;int Init(SQ &S){ S.base=(ElemType *)malloc(maxsize*sizeof(ElemType)); if(!S.base) exit(-1); S.top=S.base; S.Length=maxsize; return 1;}int push(SQ &S,int e){ *S.top++=e; return 1;}int pop(SQ &S,ElemType &e){ e=*(--S.top); return 1;}int com_de(char ch){ if(ch=='+'||ch=='-') return 1; else if(ch=='*'||ch=='/') return 2; else if(ch=='(') return 3; else if(ch==')') return 4;}int get(SQ &S){ char e; e=*(S.top-1); return com_de(e);}int Empty(SQ &S){ if(S.top==S.base) return 1; return 0;}void Clear(SQ &S){ S.top=S.base;}int main(){ ElemType e; int i; char f[maxsize]; while(gets(f)!=NULL) { SQ S; Init(S); for(i=0; f[i]!='#'; i++) { if(f[i]>='a'&&f[i]<='z') printf("%c",f[i]); else { if(Empty(S)) push(S,f[i]); else if(com_de(f[i])==4) { while(get(S)!=3) { pop(S,e); printf("%c",e); } pop(S,e); } else if(com_de(f[i])<=get(S)&&get(S)!=3) { pop(S,e); printf("%c",e); push(S,f[i]); } else push(S,f[i]); } } while(!Empty(S)) { pop(S,e); printf("%c",e); } printf("\n"); }}
0 0
- SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式(手写栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式(java实现)
- [SDUT](2132)数据结构实验之栈二:一般算术表达式转换成后缀式 ---栈
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT OJ 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- OTG
- nyoj 116 士兵杀敌(二)<经典树状数组-插点问线>
- 空心三角形
- eclipse4.5在线安装Aptana3插件报错解决方案
- Vmware vSphere client手动更改mac地址
- SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- Java 打印水仙花数
- android - TextView单行显示...或者文字左右滚动(走马灯效果)
- Leftmost Digit(经典数学问题,对数求解)
- 【解释】对用户透明=对用户隐蔽:关系模型的存取路径对用户透明
- Menu
- (LeetCode)Move Zeroes -- 将元素0放到末尾
- UML之对象图
- 函数的相关知识及函数指针