考研论坛

 找回密码
 立即注册
查看: 56|回复: 0

2014计算机考研临考指导:数据结构常用算法精析3

[复制链接]

33万

主题

33万

帖子

100万

积分

论坛元老

Rank: 8Rank: 8

积分
1007237
发表于 2016-8-9 16:42:38 | 显示全部楼层 |阅读模式
  数据结构是计算机考研408计算机学科专业基础综合的重要组成部分,考生需要认真复习,尤其是对于数据结构中一些常用的算法问题,考生一定要弄懂弄会,理解的去掌握,下面是第3章节有关数据结构算法,希望对大家有所帮助。
          第三章
          例如:Exp=a*b+(c-d/e)*f
          若 Exp=a*b+(c-d/e)*f  则它的
          前缀式为: +*ab*-c/def
          中缀式为: a*b+c-d/e*f
          后缀式为: ab*cde/-fx+
          综合比较它们之间的关系可得下列结论:
          1.三式中的 “操作数之间的相对次序相同”;
          (二叉树的三种访问次序中,叶子的相对访问次序是相同的)
          2.三式中的 “运算符之间的的相对次序不同”;
          3.中缀式丢失了括弧信息,致使运算的次序不确定;
          (而前缀和后缀运算只需要一个存储操作数的栈,而中缀求值需要两个栈,符号栈和操
          作数栈)
          4.前缀式的运算规则为:连续出现的两个操作数和在它们之前且紧靠它们的运算符构成一个最小表达式;
          5.后缀式的运算规则为:
          ·运算符在式中出现的顺序恰为表达式的运算顺序;
          ·每个运算符和在它之前出现且紧靠它的两个操作数构成一个最小表达式;
          6.中缀求值的运算规则:
          如果是操作数直接入栈。
          如果是运算符。这与当前栈顶比较。个如果比当前栈顶高,则入栈,如果低则说明当前栈顶是最高的必须把他先运算完了。用编译原理的话就是说当前栈顶已经是最左素短语了)
          其实中缀表达式直接求值和把中缀表达式转化成后缀表达式在求值的过程惊人的相似,只不过是直接求值是求出来,而转化成后缀是输出来。
          中缀表达式直接求值算法:
          OPNDType EvalueExpression()
          { //OPTR 和OPND分别为运算符栈和操作数栈
          InitStack(OPTR);Push(OPTR,’#’);
          InitStack(OPND);c=getchar();
          While(c!=’#’|| GetTop(OPTR)!=’#’)
          {
          If(!IN(c,OP) ) //如果是操作数,直接入操作数栈
          { push(OPND,c);
          c=getchar();
          }
          Else //如果是运算符,则与当前的栈顶比较
          {
          Switch(Precede(GetTop(OPTR),c))
          {
          Case ‘
          c=getchar();
          break;
          Case ’= ’:Pop(OPTR,x); //在我们设计的优先级表中,
          c=getchar(); //只有’(’和’)’存在相等的情况,
          break; //而在规约中间只存在‘(’‘)’
          //所以我们直接把’(’弹出就可以了
          Case ‘>’: //比当前栈顶低,则要把栈顶先运算完(先规约)
          pop(OPTR,theta); //把栈顶运算符弹出
          Pop(OPND,b); //取出操作数,并且是前操作数
          Pop(OPND,a); //在下面(栈的先进后出)
          Push(OPND,Operate(a,theta,b)); //运算的结果入栈
          //(他是其他运算符的操作数)
          Break;
          }//Switch
          }//else
          }//whild
          Return GetTop(OPND);//操作数栈中最后剩下的就是整个表达式的结果了。 (责任编辑:tq2013)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|新都网

GMT+8, 2025-9-27 06:05 , Processed in 0.054976 second(s), 8 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表