2132 数据结构实验之栈二:一般算术表达式转换成后缀式
2016-10-27 16:19
267 查看
数据结构实验之栈二:一般算术表达式转换成后缀式
#include<cstdlib> #include<iostream> #include<cstdio> #define stacknum 11111 #define stackmax 1111111 typedef char ET; typedef struct { ET *top; ET *base; int stacksize; }stack; int CreatStack(stack &s) { s.base=(ET*)malloc(stackmax*sizeof(ET)); if(!s.base) exit(0); s.top=s.base; s.stacksize=stackmax; return 1; } void push (stack &s,char e ) { if(s.top-s.base>s.stacksize) { s.base=(ET*)malloc((stackmax+stacknum)*sizeof(ET)); if(!s.base) exit(0); s.top=s.base+s.stacksize; s.stacksize+=stacknum; } *s.top++=e; } void pop(stack &s) { s.top--; printf("%c",*s.top); } void choose(stack &s,char str[]) { for(int i=0;str[i]!='#';i++) { if(str[i]>='a'&&str[i]<='z') printf("%c",str[i]); else if(str[i]=='*'||str[i]=='/') push (s,str[i]); else if (str[i]=='+'||str[i]=='-') { if(*(s.top-1)=='*'||*(s.top-1)=='/') pop(s); push(s,str[i]); } else if(str[i]=='(') push(s,str[i]); else if(str[i]==')') { while (*(s.top-1)!='(') pop(s); s.top--; } } while (s.top!=s.base) pop(s); printf("\n"); } int main() { stack s; char str[stackmax]; gets(str); CreatStack(s); choose(s,str); return 0; }
相关文章推荐
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式 2132
- 数据结构实验之栈二:一般算术表达式转换成后缀式 SDUT 2132
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式 (sdut oj 2132)
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT2132-数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- [SDUT](2132)数据结构实验之栈二:一般算术表达式转换成后缀式 ---栈
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 顺序表C++数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式