关于中缀表达转后缀表达一题我的做法及思想

让蛋子飞95

让蛋子飞95

2016-02-19 13:15

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享关于中缀表达转后缀表达一题我的做法及思想,希望可以对大家能有小小的帮助。
今天做了一题的题目是这样的:假设表达式由单子母变量和双目四则运算算法构成。试写一算法,将以通常书写形式且书写正确的表达式转换为逆波兰式。
  下面是我做这题的思想以及具体程序,不知道大家觉得这样做好不好,我是用递归做的./*思想:
  1.第一个字符肯定先放到新数组.
  2.假如碰到'*',或者'/'的话就先把这个符号后面的那个字符放入新数组,然后再将符号压进去.
  3.假如碰到'+','-'的话,假如下一个符号的优先级和它们一样就用同上的方法,假如后面符号的优先级比它们
  高的话就用for循环来查找下一个与它们优先级一样的符号.假如查到的话在完成后面的符号全都放入新数组后就把这个符号放入新数组,然后再执行后面的递归.假如前面没查到相同优先级符号的话就把后面的符号都放入新数组后再把这个符号放进去.做这一步中因为牵涉到后面'*','/'符号都放入后要回到原来的位置,所以就用了个yes变量来判定是否碰到这种要返回的情况,假如yes=1,就表示有这种情况,有些地方需要非凡判定.
  4.假如要再加入括号的话我觉得可以再用一个类似yes类型的变量就可以完成.
  */
  #define N 80
  int i=0,yes=0;/*i是新数组的下标指示,yes变量用来判定'+','-'后面假如有'*','/'的情况*/
  void Input(char *x);/*输入表达式*/
  void Output(char *x);/*输出逆波兰*/
  int Fun(char *x,char *y,int n);/*递归函数*/
  void main(void)
  {
   char x[N],y[N];
   Input(x);
   Fun(x,y,1);
   Output(y);
  }
  int Fun(char *x,char *y,int n)/*递归函数*/
  {int j;
   if(x[n]=='
展开更多 50%)
分享

猜你喜欢

关于中缀表达转后缀表达一题我的做法及思想

编程语言 网络编程
关于中缀表达转后缀表达一题我的做法及思想

后缀表达式求值及校验

C语言教程 C语言函数
后缀表达式求值及校验

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

表达我的爱 一封独特的《赤壁》情书

网络游戏
表达我的爱 一封独特的《赤壁》情书

我见过的最长的表达式

编程语言 网络编程
我见过的最长的表达式

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

AutoCAD教程:“筷子放在杯子里”一题的画法

autocad教程
AutoCAD教程:“筷子放在杯子里”一题的画法

插花艺术教程 如何表达插花作品的主题思想

插花艺术 插花
插花艺术教程 如何表达插花作品的主题思想

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

JavaScript使用技巧精选

JavaScript使用技巧精选

VBA修改窗口为最小化、最大化代码

VBA修改窗口为最小化、最大化代码
下拉加载更多内容 ↓