把中缀表达式转换为后缀表达式的算法我需要用html和javascript实现一个科学计算器的全部功能包括三角函数等常用函数,现在需要有把中缀表达式转换为后缀表达式的方法,希望有具体的解释,

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 08:49:10

把中缀表达式转换为后缀表达式的算法我需要用html和javascript实现一个科学计算器的全部功能包括三角函数等常用函数,现在需要有把中缀表达式转换为后缀表达式的方法,希望有具体的解释,
把中缀表达式转换为后缀表达式的算法
我需要用html和javascript实现一个科学计算器的全部功能包括三角函数等常用函数,现在需要有把中缀表达式转换为后缀表达式的方法,希望有具体的解释,或者能提供教程也行.最好把计算机识别后缀表达式的原理解释一下,分数不多,不成敬意.

把中缀表达式转换为后缀表达式的算法我需要用html和javascript实现一个科学计算器的全部功能包括三角函数等常用函数,现在需要有把中缀表达式转换为后缀表达式的方法,希望有具体的解释,
include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MaxStackSize 100
#define M 100
typedef char DataType;
#include "SeqStack.h"
#include "implement.c"
/////////////////////////////计算表达式/////////////////////////////////
void EvaluateExpression(char *exp)
{
char c;
char theta;
char tmpc,a,b,y;
//char x,ch;
SeqStack OPTR; //运算符栈
SeqStack OPND; //操作数栈
//int s1,s2;
StackInitiate(&OPTR);
StackPush(&OPTR,'#');
StackInitiate(&OPND);

c=*exp++;
//printf("当前读取的字符为%c\n",c);

StackTop(OPTR,&tmpc);
//printf("当前运算符栈顶字符为%c\n",tmpc);
//printf("%c",tmpc);
while (c!='#'||tmpc!='#')
{
printf("进入循环,当前读取表达式的字符为%c\n",c);
if(!IsOperator(c)) //如果获取的字符不是运算符则入操作数栈
{

printf("发现操作数\n");
StackPush(&OPND,c);
c=*exp++;
//x=getchar();
}
else
{
printf("发现运算符\n");
//StackTop(OPTR,&tmpc); //获取当前运算符栈顶字符
//printf("当前的运算符是:%c\n",tmpc);
//ch=Precede(tmpc,c);
//printf("运算符是:%c\n",ch);
switch(Precede(tmpc,c))
{
 case '': //退栈并计算
//printf("栈顶元素优先级高:出栈\n");

StackPop(&OPTR,&theta);
//printf("当前进行的运算是:");
//printf("%c\n",theta);
StackPop(&OPND,&b); StackPop(&OPND,&a);
StackPush(&OPND, Operate(a,theta,b));

StackTop(OPTR,&theta); //获取一个运算符出栈之后的当前运算符栈顶,继续和此时读取的运算符比较
while(Precede(theta,c)=='>')
{


StackPop(&OPND,&b); StackPop(&OPND,&a);
StackPush(&OPND, Operate(a,theta,b));
StackPop(&OPTR,&theta); //将当前的栈顶弹出(刚刚比较过的运算符)
StackTop(OPTR,&theta); //获取当前新的栈顶
}
if(Precede(theta,c)=='=') //右括号始终不进栈,在此去除左括号.
{

StackPop(&OPTR,&theta); //将当前的栈顶弹出(刚刚比较过的运算符)
//StackTop(OPTR,&theta); //获取当前新的栈顶
}
if(c!='#'&&c!=')') //将所有栈内优先级高的运算完成(出栈)之后,将当前的运算符入栈
StackPush(&OPTR,c);

//StackTop(OPND,&y);
//printf("当前操作数栈顶为%c\n",y);
//c=*exp++;
break;
}//switch
if(!StackEmpty(OPTR))
StackTop(OPTR,&tmpc);
//if(tmpc=='#') break;
//x=getchar();
if(c!='#')
c=*exp++; //c指向下一个字符

}
//printf("in while");
//printf("当前的theta:%c\n",theta);
//printf("当前的c:%c\n",c);
//printf("当前的tmpc:%c\n",tmpc);
}//while
StackTop(OPND,&y);
printf("表达式的运算结果为%c\n",y);
}
void main(void)
{
char str[M];
printf("请输入中缀表达式(注意所有运算结果都应该保证在10以内,以免出错.):\n");
gets(str);
EvaluateExpression(str);
}

把中缀表达式转换为后缀表达式的算法我需要用html和javascript实现一个科学计算器的全部功能包括三角函数等常用函数,现在需要有把中缀表达式转换为后缀表达式的方法,希望有具体的解释, 求中缀表达式转换为后缀表达式程序 表达式求值中缀表达式转换为后缀表达式,并求值,(C语言) PASCAL 中 前缀表达式与中缀表达式间,以及后缀表达式与中缀表达式间如何实现转换?就是用程序求出 前缀表达式的值,中缀表达式的值以及后缀表达式的值 中缀表达式3 + 4/(25 -(6+15))* 8转换为后缀表达式 利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg* 前缀、中缀、后缀表达式是怎样的? 后缀表达式如何转成中缀表达式?是后转中!我知道后缀表达式如何计算出具体的数字,但是怎么把它转成中缀表达式呢?做填空题用,所以最好要能笔算的, 用堆栈实现将中缀表达式转化为后缀表达式 ‘中缀表达式’‘和后缀表达式’的英文是什么? 已知二叉树的前缀表达式为ABCDE,中缀表达式为BDCEA,后缀表达式怎么求出来?有何方法? 数据结构,如何把一个后缀表达式换为中缀表达式,比如a+b*c+(d*e+f)*g 前缀、中缀、后缀表达式是怎样的?如题 表达式a*(b+C)-d的后缀表达式什么?什么叫中缀和后缀? 与中缀表达式23+((12*3-2)/4+34*5/7)+108/9等价的后缀表达式为——? 【讨论】已知中缀表达式为a-(b+c/d)*e,其后缀形式为?这道题是复旦那本指南上P71页例3,已知“中缀表达式”怎么建立其相应的二叉树啊?这一点我不明白,[] 把中缀表达式转为后缀表达式有多少种方法?哪一种最好? 中缀表达式为:5*x-3+b/x^2 的前缀 后缀表达式分别是什么?a+b*c/d 的前缀 后缀呢?