正在加载图片...
c=gettop(s); if*p优先级比c高)push(s,*p) else while(gettop(s)优先级不比*p低) pop(s, c); (q++c; //while push(s,p)∥运算符在栈内遵循越往栈顶优先级越高的原则 allele p++; i//while NiBoLan/参见编译原理教材 int getvalue nibolan(char*str)/对逆波兰式求值 p= str InitStack(s),/s为操作数栈 while( p) if(*p是数)push(s,*p) else pop(s, a) pop(s, b); r= compute(b,*p,a;∥假设 compute为执行双目运算的过程 push(s, r); p+ i//while pop(s, r), return r; i//Get Value NiBoLan 3.23 Status nibolan to bolan(char* str, stringtype&newy/把逆波兰表达式str转换为 波兰式new p= str Initstack(s),/s的元素为 stringtype类型 while(°p) if(*p为字母)push(s,*p) elsec=gettop(s); if(*p 优先级比 c 高) push(s,*p); else { while(gettop(s)优先级不比*p 低) { pop(s,c);*(q++)=c; }//while push(s,*p); //运算符在栈内遵循越往栈顶优先级越高的原则 }//else }//else p++; }//while }//NiBoLan //参见编译原理教材 3.22 int GetValue_NiBoLan(char *str)//对逆波兰式求值 { p=str;InitStack(s); //s 为操作数栈 while(*p) { if(*p 是数) push(s,*p); else { pop(s,a);pop(s,b); r=compute(b,*p,a); //假设 compute 为执行双目运算的过程 push(s,r); }//else p++; }//while pop(s,r);return r; }//GetValue_NiBoLan 3.23 Status NiBoLan_to_BoLan(char *str,stringtype &new)//把逆波兰表达式 str 转换为 波兰式 new { p=str;Initstack(s); //s 的元素为 stringtype 类型 while(*p) { if(*p 为字母) push(s,*p); else {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有