这是我个人学习简单c语言程序例子的练习,如果对你有帮助请关注我,我将不定期更新如果疑问或者建议可以在评论区留言沟通。
printf("对不起您输入的数字有误请重新输入。\n");
这是我个人学习简单c语言程序例子的练习,如果对你有帮助请关注我,我将不定期更新如果疑问或者建议可以在评论区留言沟通。
printf("对不起您输入的数字有误请重新输入。\n");
中序表达转换成后序表达式的方法:
从左到右读取该中弱序表达式:
1.若是操作数则直接输出.
(1)若该运算符为"(",则直接入栈.
(2)若该运算符为")",则取出堆栈中的运算符,直到"("时.
(3)其它: 按优先级比较如果大于或等于堆栈中当前的运算则压入栈中,否则直接输出.
(4)检查栈是否非空如果非空,则输出所有值直到空为止.
棧运算。维护一个变量栈和一个符号栈(数字认为是变量)
可以看到优先级高的符号先算。为了方便起见先在表达式两边加括号。
依佽读入每个字符如果是变量则入变量栈。如果是符号就与栈顶符号比较优先级。
如果相等则同时退栈(不处理,读下一字符)
如果栈外大,则入栈
如果栈内大,则以栈内符号为根变量栈最顶2元素成为他的孩子(该2变量退栈),创建一个新的变量代表这颗以该符號为根两变量为孩子的树。同时栈外的这个符号保留继续与栈顶比较。
还原成树结构取出变量栈中的最后一个元素(如果表达式合法,此时符号栈应为空变量栈仅有1个变量),依次扩展具体可以使用以下数据结构:
(我是学PASCAL的,不会C所以用PASCAL语言写出来咯。。)
时进行了如下操作
继续处理),此时栈外)与栈内(优先级相等,同时退栈,继续,
接着)退栈,最后边的)也和最左边的(一起退栈,此时表达式处理完毕,符号棧为空,变量栈有一个变量p2
p2记录了完整的二叉树,还原后得到了
菜单放在屏幕中央位置
必须先運行1输入数据,才能运行2四则运算
要求依据用户输入的‘+’、‘-’、‘*’、‘、’四个运算符进行相应运算。
P.S.本人大一新生刚学一个朤简单c语言程序例子,所以能编简单点就编简单点谢谢