大学士考试网

考研分类

2014年考研数据结构辅导(13)

专业课  时间: 2019-03-09 12:17:12  作者: 匿名 

中缀表达式转化成后缀表达式算法

void trans-post(char E[n] ,char B[n])  //中、后缀表达式转换//

{  //E[n]是中缀表达式、B[n]是后缀表达式存储的空间

  int i=0,j=0; char x; stype S;

  Clearstack(S); Push(S,‘#’);//‘#’入栈// 

     do {

   x=E[i++] ; //扫描当前表达式分量//

       if (x=‘#’)  //到了中缀表达式最后了

while(!Emptystack(S)) //全部退栈,#和#是优先级最低的,

    B[j++]==pop(S); //所以当前栈的所有运算都要规约

  //输出栈顶运算符,并退栈直到遇见栈底的开始放进去的那个#//

       else if (isdigit(x))

B[j++]=x;  //操作数直接输出//

   else if (x=‘)’) //遇到)那么就一定要找到(

   {

while (Getstop(S)!=‘(’)

  B[j++]=pop(S); //输出栈顶,并退栈//

pop(S); //退掉‘(’//

   }

   else   //x为运算符//

   { 

while (precede(Getstop(S), x))  //栈顶( q1)与x比较//

B[j++]=pop(S); // q1 >=x时,输出栈顶符并退栈//

  Push(S,x); // q1 < x时x进栈//

   }

   } while (x!=’#’);

B[j]=’#’;

} //置表达式结束符//

猜你喜欢

精选专题