第3章_栈和队列(2010-10-14).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章_栈和队列(2010-10-14)

栈和队列 Status InitQueue ( SqQueue * q ) { q-base = (char *)malloc( MAX*sizeof(char) ); q-front = q-rear = 0; return OK; } Status QueueEmpty ( SqQueue q ) { return q.front == q.rear; } Status EnQueue ( SqQueue * q, char e ) { q-base[q-rear++]=e; } Status DeQueue ( SqQueue * q, char * e ) { *e = q-base[q-front++]; } 栈和队列 main( ) { char c, e; InitStack (s); InitQueue (q); while ( ( c=getchar() ) !=\n ) /* 输入 */ { Push ( s, c); EnQueue (q, c); } while ( ! StackEmpty(s) ) /* 判断 */ { Pop ( s, c); DeQueue (q, e); if ( c!=e ) { printf(Error\n); exit ( ); } else putchar(c); } printf (\nOK!); } 该程序仅为基本功能实现,程序缺乏健壮性!待完善! 算法描述? operandType EvaluateExpression( ) { //算术表达式求值的算符优先算法。设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符、界限符集合。 InitStack(OPTR); Push (OPTR, #); InitStack(OPND); c=getchar( ); while ( c!=‘#’ || GetTop(OPTR)!=‘#’ ) { if (! In (c, OP)) // In(c, OP)判断c是否为运算符 { Push(OPND, c); c=getchar( ); } //不是运算符则进栈 else 3.2 栈的应用举例 switch ( Precede(GetTop(OPTR), c ) { //判定OPTR的栈顶运算符?1与读入的运算符?2间的优先关系 case : // 新输入的算符c优先级高,c进栈 Push(OPTR, c); c=getchar( ); break; case =: // 脱括号并接收下一字符 Pop(OPTR, x); c=getchar( ); break; case : //新输入的算符c优先级低,即栈顶算符优先权高 //出栈并将运算结果入栈OPND Pop ( OPTR, theta); Pop ( OPND, b); Pop(OPND, a); Push ( OPND, Operate(a, theta, b) ); //进行二元运算a ? b break; } //switch } //while return GetTop(OPND); } //EvaluateExpression 3.2 栈的应用举例 递归是很有用的工具,在数学和程序设计等许多领域中都会用到。 递归定义:简单说,一个用自己定义自己的概念,称为递归定义。 任何一个递归程序都可以通过非递归程序实现。 3.3 栈与递归 * 一、什么是队列 队列是限定仅能在表头进行删除,在表尾进行插入的线性表。 插入 (a1, a2, ... , ai -1,

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档