我想编个计算机,脑子里没思路,不知道从何而起,忘指点,谢! 我想编个计算机,脑子里没思路,不知道从何而起,忘指点,谢!不用图形界面的程序命令符下的最好,这样好理解代码谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以分两个步骤进行. 1.生成表达式串的逆波兰式. 2.对逆波兰式求值. 第一步 步骤: 先用二叉树或是栈的结构,将表达式转化成逆波兰式. 比如用栈: (逆波兰式字符串 初值为空串: String pol="";) 1.建立符号优先级表,可以用函数f(s1,s2),查询s1,s2的优先级. 比如查询f("+","*"),返回"*",因为*比+优先级高. 2.构造一个运算符栈(SignStack),此运算符在栈内遵循越往栈顶优先级越高的原则. 3.从左至右开始扫描表达式,如果第i位是数字(起),则取i+1位.直到i+1位为符号止(止).数字即(起)...(止)中间所表示的数字. pol+=数字; 4.扫描中遇到符号(记作si)时(非数字),如果si优先级高于SignStack栈顶,则si入栈,否则,pol+=SignStack.pop() (符号出栈跟在表达式后面), 直到si优先级小于栈顶.si入栈 5.重复4的过程只到表达式尾,pol就是你的输入串的逆波兰式. 第二步: 如果你对第一步的原理了解得非常清楚,这一步就相当简单了. 从右至右扫描,遇到数字就入栈, 遇到运算符出栈,用符号计算前面的入栈数,然后把结果入栈,继续向后扫描直到完成,栈顶就是结果. 说明一下. 其实求逆波兰式的过程中,已经可以把结果求出来了. 但是考虑初学者学知识,所以分两步,这样就能充分了解原理. 我是被标题雷进来的,google下逆波兰式.要求不同,难度也有区别的,比如对负数的支持,括号的支持,求绝对值(||)的支持等等.这样程序的复杂度会有比较大的差距 我也是被雷进来的,应该用逆波兰式,但比起图像界面的话就太复杂了Java的图形界面机制就是要简化程序复杂度,但楼主 为什么要反其道而行之?? 看了楼主的title真是晕下。。 怎样在APPLET上实现GridLayout布局,以及添加相关组件? ERP报表难题 Socket 总是收不到回应??? 请大家帮忙 jdbc连接oracle错误 中文字符用pringln()输出后,是乱码怎么办?? 新手请教?是xp的问题吗? 请各位在企业(工厂)作信息化工作的GGJJ们帮忙只占用你们分钟30的时间,现在只能给100不够我会再加,UP有分 关于JTREE package问题? 一道算法题,需要想出合适的算法解决 日期字符串,请大家帮忙!谢谢了, outputStream如何写入excel文件?现在的情况是生成了一个空的excel文件
2.对逆波兰式求值. 第一步 步骤: 先用二叉树或是栈的结构,将表达式转化成逆波兰式.
比如用栈: (逆波兰式字符串 初值为空串: String pol="";)
1.建立符号优先级表,可以用函数f(s1,s2),查询s1,s2的优先级. 比如查询f("+","*"),返回"*",因为*比+优先级高.
2.构造一个运算符栈(SignStack),此运算符在栈内遵循越往栈顶优先级越高的原则.
3.从左至右开始扫描表达式,如果第i位是数字(起),则取i+1位.直到i+1位为符号止(止).数字即(起)...(止)中间所表示的数字. pol+=数字;
4.扫描中遇到符号(记作si)时(非数字),如果si优先级高于SignStack栈顶,则si入栈,否则,pol+=SignStack.pop() (符号出栈跟在表达式后面), 直到si优先级小于栈顶.si入栈
5.重复4的过程只到表达式尾,pol就是你的输入串的逆波兰式. 第二步:
如果你对第一步的原理了解得非常清楚,这一步就相当简单了.
从右至右扫描,遇到数字就入栈, 遇到运算符出栈,用符号计算前面的入栈数,然后把结果入栈,继续向后扫描直到完成,栈顶就是结果. 说明一下. 其实求逆波兰式的过程中,已经可以把结果求出来了. 但是考虑初学者学知识,所以分两步,这样就能充分了解原理.
要求不同,难度也有区别的,比如对负数的支持,括号的支持,求绝对值(||)的支持等等.
这样程序的复杂度会有比较大的差距
Java的图形界面机制就是要简化程序复杂度,但楼主 为什么要反其道而行之??