数据结构实验之栈与队列二:一般算术表达式转换成后缀式
来源:互联网 发布:mysql 添加分区出错 编辑:程序博客网 时间:2024/06/01 15:38
Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Example Input
a*b+(c-d/e)*f#
Example Output
ab*cde/-f*+
Hint
Author
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;typedef char selemtype;typedef int status;#define stackmax 10000#define stacknum 10#define true 1#define error 0typedef struct{ selemtype *base; selemtype *top; int stacksize;} sqstack;int initstack(sqstack &S){ S.base=new selemtype[stackmax]; S.top=S.base; S.stacksize=stackmax; return 1;}int push(sqstack &S, selemtype e){ if(S.top-S.base>=stackmax) { S.base=(selemtype *)realloc(S.base,(S.stacksize+stacknum) * sizeof(selemtype)); S.top=S.base+S.stacksize; S.stacksize+=stacknum; } *S.top++=e; return 1;}int pop(sqstack &S, selemtype &e){ if(S.top==S.base) return 0; e=*--S.top; return 1;}status stackempty(sqstack &S){ if(S.base==S.top) return true; else return false;}int compare(char a){ if(a=='*'||a=='/') return 2; else if(a=='+'||a=='-') return 1; else if(a=='(') return 3; else if(a==')') return 4; return 0;}int main(){ sqstack S; initstack(S); selemtype e; char exp[1000]; int i=0,a=0; char s[1000]; while(~scanf("%c",&s[i])&&s[i]!='#') { if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')) { exp[a++]=s[i]; } else { if(stackempty(S)) { push(S,s[i]); } else if(compare(s[i])>compare(*(S.top-1))) { if(compare(s[i])==4) { while(*(S.top-1)!='(') { exp[a++]=*(S.top-1); pop(S,e); } pop(S,e); } else { push(S,s[i]); } } else { if(*(S.top-1)!='(') { exp[a++]=*(S.top-1); pop(S,e); push(S,s[i]); } else push(S,s[i]); } } i++; } while((!stackempty(S))) { exp[a++]=*(S.top-1); pop(S,e); } for(i=0; i<strlen(exp); i++) { cout<<exp[i]; } printf("\n"); return 0;}
阅读全文
0 0
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式 sdut-oj
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 2132 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 2132-数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 链接过程:Windows下动态链接
- 第七届蓝桥杯——第1题(年龄问题)
- CodeForces 876B
- 可达性分析算法
- 有名管道通信
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- python2 与Python3
- oracle学习之sql1999语法
- 批处理文件
- 匿名对象,封装,this,super,static main,工具类
- java中并发编程的一些总结
- ASSERT整理
- Java day6
- UIScrollView 选项卡的实现