这篇文章主要介绍“Java中缀表达式怎么转后缀表达式”,在日常操作中,相信很多人在Java中缀表达式怎么转后缀表达式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中缀表达式怎么转后缀表达式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!栈是⼀个先⼊后出的有序列表。栈(stack)是限制线性表中元素的插⼊和删除只能在线性表的同⼀端进⾏的⼀种特殊线性表。允许插⼊和删除的⼀端,为变化的⼀端,称为栈顶(Top),另⼀端为固定的⼀端,称为栈底(Bottom)。根据栈的定义可知,最先放⼊栈中元素在栈底,最后放⼊的元素在栈顶,⽽删除元素刚好相反,最后放⼊的元素最先删除,最先放⼊的元素最后删除。(1)创建一个类,模拟栈maxSize :栈的最大容量top :表示栈顶stack :数组用来存储数据(2)判断栈空和栈满▷ 栈满▷ 栈空(3)入栈操作首先判断是否栈满,栈满后则不能继续添加,先对栈顶进行加一,然后再放入数据。(4)出栈操作首先判断栈空,出栈操作其实就是将top减一即可,return stack[top–]; 这样操作是为了让我们知道出栈的数据是什么。(5)显示栈数据免费云主机域名首先将中缀表达式拆解成一个一个的字符,存放到集合中,方便后面我们将中缀转后缀时的遍历操作。首先用split分割操作将原数据分割到数组中存放,然后用增强for循环遍历并同时存放到创建好的stringList集合中。补充运算符优先级的判断后面我们转换成后缀表达式时,需要判断运算符的优先级。初始化两个栈:运算符栈s1和储存中间结果的栈s2从左至右扫描中缀表达式遇到操作数时,将其压s2遇到运算符时, 比较其与s1栈顶运算符的优先级▷如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈▷否则,若优先级比栈项运算符的高,也将运算符压入s1▷否则,将s1栈顶的运算符弹出并压入到s2中 ,再次与s1中新的栈顶运算符相比较遇到括号时:▷ 如果是左括号“(”,则直接压入s1▷ 如果是右括号“)”,则依次弹出s1栈顶的运算符, 并压入s2,直到遇到左括号为止,此时将这一对括号丢弃重复步骤2至5,直到表达式的最右边将s1中剩余的运算符依次弹出并压入s2依次弹出s2中的元素并输出,结果的逆序即为中缀表达式对应的后缀表达式前面的算法说到,首先创建两个栈一个运算符栈和一个中间结果栈,但是根据上面算法的介绍,中间结果栈没有出栈操作,就是数据全部是存入,于是在写代码的时候我们可以将中间结果栈换成集合来存放数据。首先用增强for循环遍历原数据集合,然后进行判断,如果是数字就放入右方的集合中,如果是运算符就放入左方的符号栈中。进行运算符判断,如果是左括号“( ” 就直接放入符号栈中,如果是右括号“ )”,就取出符号栈栈顶的符号放入集合中,直到遇到左括号“( ”,停止将栈顶的符号放入集合中,此时将栈顶出栈也就是去掉括号。然后继续进行遍历放入数据和符号,如果是符号,就与符号栈的栈顶的符号进行比较,要放入运算符的运算级如果小于等于栈顶运算符的运算级,就将栈顶的运算符放入集合中,但下面的图中,运算符为括号,所以不用管,因为括号有单独的判断条件,所以直接放入。遇到右括号又继续重复前面的操作。放入运算符的优先级小于等于栈顶运算符的优先级,于是将栈顶的运算符放入集合中,然后放入的运算符继续放入符号栈中。最后循环结束,将符号栈中的运算符依次放入到集合中。最后结果为:结果中不能含括号,否则转换错误!前面我们已经将中缀转成后缀表达式了,那么我们只需要直接计算了,首先还是遍历我们的集合(存放后缀表达式的)将数据暂时放入栈中方便我们操作,然后在遍历过程中进行判断,如果是数据就直接放入栈中,如果是运算符就从栈中取出两个数据进行运算,运算结果又放入栈中,直到栈中只存在一个数据时,就是最后的运算结果。到此,关于“Java中缀表达式怎么转后缀表达式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
这篇文章主要介绍“Caffe卷积神经网络solver及配置的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Caffe卷积神经网络solver及配置的方法”文章能帮助大家解决问题。solver算是caffe的核心的核…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。