第3章 和队列.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
str[++i] = getch(); } if(s.top == s.base) printf(nmatch\n); } int n(char op) //把运算符op转换为优先级关系表中的序号 { switch(op) { case +: return 0; case -: return 1; case *: return 2; case /: return 3; case (: return 4; case ): return 5; case #: return 6; } return -1; } bool xIsOperator( char x) //判别字符x是否为操作符 { char *ops=+-*/()#; for(int i=0; i7; ++i) //因为串ops的长度为7 if(x==ops[i]) return true; //只要发现x是操作符,则返回true return false; } float Postfix() { //利用两个栈,一个操作数栈和一个操作符栈来求值。 char x1,x2; //x1:操作符栈的栈顶运算符;x2:当前输入字符 seqstack *optr; //optr为一个空字符(运算符)栈 init1(optr); //初始化一个空栈。 stack *opnd; //oprd为一个空字符(运算符)栈 init2(opnd); Push(optr,#); //#入操作符栈 float a,b,result; float newoperand; cinx2; while(x2!=#||Peek(optr)!=#) { x1=Peek(optr); if(!xIsOperator(x2)) { cin.putback(x2); cinnewoperand; Push(opnd,newoperand); cinx2; } else { char proc=proceed[n(x1)][n(x2)]; switch(proc) { case : //如果x1的优先级小于x2的优先级 Push(optr,x2); //x2入栈 x1=Peek(optr); //从栈顶读运算符到x1 cinx2; //从中缀表达式读下一个字符到x2 break; case : //如果x1的优先级大于x2的优先级 x1=Pop(optr); //从栈中弹出运算符到x1 a=Pop(opnd); b=Pop(opnd); switch(x1) { case +:result=b+a;Push(opnd,result);break; case -:result=b-a;Push(opnd,result);break; case *:result=b*a;Push(opnd,result);break; case /:result=b/a;Push(opnd,result);break; default:cout出错了!;break; } break; case =: //如果x1的优先级等于x2的优先级 Pop(optr); x1=Peek(optr); cinx2; break; default: //其它情况是转换失败而结束 cout中缀表达式语法错!endl; } } } free(optr); float res; res=Pop(opnd); free(opnd); return res; } { postfixExp[i++]=#; return true; //以成功作结束 } break; default: //其它情况是转换失败而结束 cout中缀表达式语法错!endl; return false; //以失败作结束 } } } 汉诺塔问题 第二次 汉诺塔问题 第三次 汉诺塔问题 第四次 汉诺塔问题 第五次 汉诺塔问题 第六次 汉诺塔问题 第七次 void hanoi(int n, char A, char B, char C) { if (n == 1) cout “move ”nA →C endl; else { han

文档评论(0)

dmdt5055 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档