资源简介
采用栈将中缀表达式转为后缀表达式并求出数值。包含的运算符有'+', '-' ,'*','/','%'。支持整数,小数,正负数
代码片段和文件信息
#include
#include
#include
#define Maxlenth 100
typedef struct Stack{
int top;
char s[Maxlenth];
}Stack;
char Pop(Stack *S);
char top(Stack *S);
int Isempty(Stack *S);
double Calculate(char *Arrayint len);
void stackToArray(Stack *Schar *chint len);
void Push(Stack *Schar pu);
void Print(Stack *S);
void clean(char *A);
void check(char *ch);
int main()
{
Stack num;
num.top=Maxlenth;/*定义存储操作数的栈的空栈底位置*/
Stack sign;
sign.top=Maxlenth;/*定义存储操作符的栈的空栈底位置*/
Stack *N=#
Stack *S=&sign;
char c=‘ ‘;
int i=0;
char mid[Maxlenth]={‘\0‘};
gets(mid);/*读入中缀表达式*/
check(mid);/*判断是否为合法输入,非法输入时程序退出*/
int j=0;
/*将负数的负号用A表示,以区别减号和负号*/
if(mid[0]==‘-‘)
{
mid[0]=‘A‘;
}
for(j=1;j {
if(mid[j-1]==‘(‘&&mid[j]==‘-‘)
{
mid[j]=‘A‘;
}
}
/*按照优先级规则将操作符进栈出栈,操作数入栈时相邻操作数用空格间隔开。
最终的后缀表达式保存在操作数栈中。
*/
for(i=0;i { //判断mid[i]是否为操作数的一部分,如果是则直接压入操作数栈
if( (mid[i]>=‘0‘&&mid[i]<=‘9‘)||mid[i]==‘A‘||mid[i]==‘.‘)
{
if(mid[i]==‘A‘)
{
Push(N‘-‘);
}
else{
Push(Nmid[i]);
}
}
else
{
if(mid[i]==‘(‘)
{
Push(Smid[i]);
}
else
{
if(mid[i]==‘+‘||mid[i]==‘-‘)
{
while(top(S)!=‘(‘&&(!Isempty(S)))
{
Push(Nc); //将空格压入操作数栈以区分相邻的两个操作数
Push(NPop(S));
}
Push(Nc);
Push(Smid[i]);
}
else
{
if(mid[i]==‘*‘||mid[i]==‘/‘||mid[i]==‘%‘)
{
while((top(S)==‘*‘||top(S)==‘/‘||top(S)==‘%‘)&&(!Isempty(S)) )
{ //弹出优先级大于或等于mid[i]的操作符到操作数栈,
//直到栈顶元素优先级比mid[i]小或者栈空为止
Push(Nc);
Push(NPop(S));
}
Push(Nc);
Push(Smid[i]);
}
else
{
if(mid[i]==‘)‘)//遇到左括号时弹操作符栈到操作数栈,直到弹出左括号为止
{
while(top(S)!=‘(‘ )
{
Push(Nc);
Push(NPop(S));
}
Push(Nc);
Pop(S);
}
}
}
}
}
}
//把操作符栈的元素弹出到操作数栈
while(!Isempty(S))
{
Push(Nc);
Push(NPop(S));
相关资源
- 数据结构第九章 查找作业及答案100分
- 第十章 排序作业及答案数据结构
- 数据结构课程设计 表达式求值
- 数据结构哈夫曼编码报告
- 数据结构课程设计——地铁建设问题
- 广工anyview数据结构答案
- 数据结构课程设计校园导游系统
- 数据结构课程设计-校园导游
- 顺序表表示集合,实现集合的交、并
- 5、校园导游程序源程序+文档+说明+总
- 《数据结构及算法经典》源代码.
- DT数据结构代码 DTlib.rar
- 数据结构动画演示
- 利用Qt实现的N皇后算法
- 东北大学数据结构实验1打印机fifo
- 拓扑排序------打印输出计算机本科专
- 数据结构上机实验_栈和队列的应用
- 大学课程中相关一些算法题
- 数据结构哈希表设计与实现课程设计
- 航空订票模拟系统 数据结构课程设计
- 数据结构大作业(家谱管理系统)
- 数据结构车厢调度课程设计
- 数据结构实现两个多项式的相加和相
- 数据结构 图的应用
- 数据结构中图算法设计题
- 数据结构-树与二叉树算法汇总
- 数据结构 国防科大答案
- 数据结构课程设计报告单
- 浙大 数据结构与算法60讲 网盘地址
- 利用栈求表达式的值数据结构
评论
共有 条评论