如何利用 逆波兰式 把 中序表达式 装进一个 队列 或者堆栈 里面呢?比如 2+8*6/2-(1*5)+8/(2+4*4)再如何运算出这个表达式的结果呢?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 04:36:37
如何利用 逆波兰式 把 中序表达式 装进一个 队列 或者堆栈 里面呢?比如 2+8*6/2-(1*5)+8/(2+4*4)再如何运算出这个表达式的结果呢?

如何利用 逆波兰式 把 中序表达式 装进一个 队列 或者堆栈 里面呢?比如 2+8*6/2-(1*5)+8/(2+4*4)再如何运算出这个表达式的结果呢?
如何利用 逆波兰式 把 中序表达式 装进一个 队列 或者堆栈 里面呢?
比如 2+8*6/2-(1*5)+8/(2+4*4)
再如何运算出这个表达式的结果呢?

如何利用 逆波兰式 把 中序表达式 装进一个 队列 或者堆栈 里面呢?比如 2+8*6/2-(1*5)+8/(2+4*4)再如何运算出这个表达式的结果呢?
我这是c 的基本算法,
如需要,我再给你完整的程序
typedef int SElemType;
typedef struct SqStack
{ char *base;
char *top;
char stacksize;
}SqStack;
程序
void InitStack (SqStack &S)
{
S.base=(char *) malloc (STACK_INIT_SIZE *sizeof(char));
if (!S.base)
exit (OVERFLOW); //为栈S分配存储空间失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
int Push(SqStack &S,char ch)
// 将元素e插入到栈S中,成为新的栈顶元素
{
if (S.top-S.base>S.stacksize) //Stack==full?
{ S.base=(char *)realloc(S.base,(S.stacksize+STACKINCREMENT *sizeof(char)));
if (!S.base)
{ printf(“Failure to reallocate the Memory units!:\n”);
exit(OVERFLOW);
}
S.top=S.base+S.stacksize; //To Modify pointer of Satck top
S.stacksize+=STACKINCREMENT; //To modify the size of stack
} // end of if
*S.top++=ch; //先将e送入栈顶指针所指向的单元,再将栈顶指针加1
return(OK);
} //end of Push() subfunction
int Pop(SqStack &S,char &ch)
{
if (S.top==S.base)
{
printf(“下溢!”);
return (ERROR);
}
ch=*--S.top;
return (OK);
}
void Translation()
{//将算术表达式转化为逆波兰表达式,num为算术表达式的字符总个数
int i,j;
char str[100],exp[100],ch;
SqStack S;
InitStack(S);
i=1;
printf(“ 请输入算术表达式字符串,求其逆波兰表达式,以#为结束标志,如a-b*c/(3+6)#:\n”);
do
{
scanf(“%c”,&str[i]);
i++;
}while(str[i-1]!=’#’);
str[0]=’(‘; //将表达式放在()内
str[i-1]=’)’;
str[i]=’#’;
i=0;
j=0;
while(str[i]!=’#’)
{ if((str[i]>=’0’ &&str[i]=’a’ &&str[i]

如何利用 逆波兰式 把 中序表达式 装进一个 队列 或者堆栈 里面呢?比如 2+8*6/2-(1*5)+8/(2+4*4)再如何运算出这个表达式的结果呢? 什么是逆波兰式?怎样把一个算术表达式转化成逆波兰式进行计算? 请把算术表达式b*(-c+d)+c/(-f)翻译成四元式和逆波兰式 写出表达式(A+B*(C+D))/E-H+U/S的波兰式和逆波兰式. 利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg* 表达式(a+b)*c/d-e*分别表示三元式,四元式,逆波兰式序列 表达式a-b/(c+d)的逆波兰 如何把左手的瓶子装进右手的瓶子 写出下列表达式的逆波兰表达式(后缀式) (1)a*(-b+c-d) (2)(A∨B)∧(C∨┐ D∧E)写出下列表达式的逆波兰表达式(后缀式)(1)a*(-b+c-d)(2)(A∨B)∧(C∨┐ D∧E) 如何利用PPT书写函数表达式 为什么要研究逆波兰式?既然逆波兰式就是对于2叉树的后序遍历,那么为什么先序遍历和中序遍历没有它那么重要呢,为什么要突出的讲逆波兰式的重要性? 逆波兰式是什么样的 《编译原理》的一道题写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列 如何利用 刻度尺、烧杯、水、杠杆、石块A、B等(没有桶)测液体密度 把表达式也要写出来 , (a+b+c)/d+e*f-m的波兰式跟逆波兰式 数据结构里 波兰是 和 逆波兰式 是什么意思 有什么区别 matlab中如何把一般表达式自动改写成矩阵运算的表达式(带点乘点除的)? 在数据库中,如何把 借阅天数=归还日期-借阅日期 变成表达式,表达式又是什么啊?