数据结构实验之栈与队列二:一般算术表达式转换成后缀式
来源:互联网 发布:淘宝卖什么暴利 编辑:程序博客网 时间:2024/06/06 07:46
Problem Description
对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。
Input
输入一个算术表达式,以‘#’字符作为结束标志。
Output
输出该表达式转换所得到的后缀式。
Example Input
a*b+(c-d/e)*f#
Example Output
ab*cde/-f*+
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
char *base;
char *top;
int stacksize;
} SqStack;
struct stack
{
int InitStack(SqStack &S)
{
S.base = (char *)malloc(STACK_INIT_SIZE * sizeof(char));
if( !S.base) return -1;
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return 0;
}
int GetTop(SqStack &S)
{
return *(S.top - 1);
}
int Push(SqStack &S, char e)
{
if(S.top - S.base >= S.stacksize)
{
S.base = (char*)realloc(S.base, (S.stacksize + STACKINCREMENT) *sizeof(char));
if(!S.base) return -1;
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top = e;
S.top++;
return 0;
}
void Pop(SqStack &S)
{
S.top--;
}
}Q;
int ch(char c)
{
if(c == '+' || c == '-')
return 1;
if(c == '*' || c == '/')
return 2;
if(c == '(')
return 3;
if(c == ')')
return 4;
return 0;
}
int main()
{
SqStack S;
Q.InitStack(S);
char s;
while(scanf("%c", &s) && s != '#')
{
if(s >= 'a' && s <= 'z')
printf("%c", s);
else
{
if(S.base == S.top)
{
Q.Push(S, s);
}
else if(ch(s) > ch(Q.GetTop(S)))
{
if(ch(s) == 4)
{
while(Q.GetTop(S) != '(')
{
printf("%c", Q.GetTop(S));
Q.Pop(S);
}
Q.Pop(S);
}
else
{
Q.Push(S, s);
}
}
else
{
if(Q.GetTop(S) != '(')
{
printf("%c", Q.GetTop(S));
Q.Pop(S);
Q.Push(S, s);
}
else
{
Q.Push(S, s);
}
}
}
}
while(S.top != S.base)
{
printf("%c", Q.GetTop(S));
Q.Pop(S);
}
printf("\n");
return 0;
}
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式 sdut-oj
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 2132 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 2132-数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- 第十三周项目一
- 不同的神经网络训练函数training function的比较
- PHP项目Docker化指南
- Ubuntu16.04+Anaconda+Geany配置
- 重大改革:吴恩达,女儿识字后立马教她学Python!
- 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
- Could not open a connection to your authentication agent.
- R studio 快捷键 Mac
- Windows 10 原生 OpenSSH
- final
- C/C++ 第五周线性表 项目(二)建立链栈算法库
- 快速排序模板
- 同一服务器部署多个tomca的端口号修改详情(同时启动两个tomcat)
- 第三周项目1