数据结构实验之栈二:一般算术表达式转换成后缀式
来源:互联网 发布:华为软件开发面试经验 编辑:程序博客网 时间:2024/06/05 03:00
题目描述
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
输入
输入一个算术表达式,以‘#’字符作为结束标志。
输出
输出该表达式转换所得到的后缀式。
示例输入
a*b+(c-d/e)*f#
示例输出
ab*cde/-f*+
#include<stdio.h>#include<stdlib.h>#define stackmax 10000#define stacknum 10000typedef struct{ char *top; char *base; int stacksize;}Sqstack;int initstack(Sqstack &s)//栈的初始化;{ s.base = (char *)malloc(stackmax*sizeof(char)); if(!s.base) exit(0);//栈满; s.top = s.base; s.stacksize = stackmax; return 1;}void push(Sqstack &s,char e)//进栈;{ if(s.top - s.base > s.stacksize) { s.base = (char *)malloc((stackmax + stacknum)*sizeof(char)); if(!s.base)exit(0);//空间溢出; s.top = s.base + s.stacksize; s.stacksize += stacknum; } *s.top++ = e;}void pop(Sqstack &s)//出栈;{ s.top--; printf("%c",*s.top);}void choose(Sqstack &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(){ Sqstack s; char str[stackmax]; gets(str); initstack(s);//栈的初始化; choose(s,str); return 0;}
0 0
- SDUT2132数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式(手写栈)
- 数据结构实验之栈二:一般算术表达式转换成后缀式(栈)
- [SDUT](2132)数据结构实验之栈二:一般算术表达式转换成后缀式 ---栈
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT OJ 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- SDUT 2132 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- Jquery超简单遮罩层实现代码
- 负载均衡与反向代理
- 【Java】对象的拷贝
- Win7下,VS2010 + CUDA7.5 + GPU 重新编译OpenCV2.4.9(一)
- BFS与最短路笔记
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- fuzzy decision tree
- 欢迎使用CSDN-markdown编辑器
- ADT+CDT VS +NDK +Eclipse 编写C++程序
- HDU 1257 最少拦截系统
- CentOS更改yum源与更新系统
- 【转】Android将Activity打成jar包供第三方调用
- 文本查看及处理工具:wc, cut, sort, uniq, diff, patch
- 树结构练习——判断给定森林中有多少棵树 (sdut oj 2129)