数据结构 括号匹配.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 括号匹配

括号匹配问题;制作过程;①括号匹配问题的设计内容;②算法思想描述;(1)算法 顺序扫描算数表达式(表现为一个字符串),当遇到三种类型的左括号时候让该括号进栈; 当扫描到某一种类型的右括号时,比较当前栈顶元素是否与之匹配,若匹配,退栈继续判断; 若当前栈顶元素与当前扫描的括号不匹配,则左右括号配对次序不正确; 若字符串当前为某种类型的右括号而堆栈已经空,则右括号多于左括号; 字符串循环扫描结束时,若堆栈非空(即堆栈尚有某种类型的左括号),则说明左括号多于右括号; 否则,括号配对正确。;(2)程序的实现;出栈 Status Pop(SqStack *S,SElemType *e) { /* 若栈不空,则删除S的栈顶元素,用e返回其值, 并返回OK;否则返回ERROR */ if((*S).top==(*S).base) return ERROR; *e=*--(*S).top; return OK; } ;运行语句 void StackTraverse(SqStack S,void(*visit)(SElemType)) {while(S.topS.base) visit(*S.base++); printf(\n);} void check() {SqStack s; SElemType ch[80],*p,e; InitStack(s); /* 初始化栈成功 */ printf(“请输入一个算术表达式 (可包含()、[]和{})\n); gets(ch); p=ch; /* p指向字符串的首字符 */ while(*p) /* 没到串尾 */ switch(*p) {case (: case [: case {:Push(s,*p++); /* 左括号入栈,且p++ */ break; case ): case ]: case }:if(!StackEmpty(s)) /* 栈不空 */;情况① void Push(SqStack *S,SElemType e) { /* 插入元素e为新的栈顶元素 */ if((*S).top-(*S).base=(*S).stacksize) { (*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACK_INCREMENT)*sizeof(SElemType)); if(!(*S).base) exit(OVERFLOW); /* 存储分配失败 */ (*S).top=(*S).base+(*S).stacksize; (*S).stacksize+=STACK_INCREMENT; } *((*S).top)++=e; } Status Pop(SqStack *S,SElemType *e) { if((*S).top==(*S).base) return ERROR; *e=*--(*S).top; return OK; } ; ; ;情况④ void Push(SqStack *S,SElemType e) { /* 插入元素e为新的栈顶元素 */ if((*S).top-(*S).base=(*S).stacksize) { (*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACK_INCREMENT)*sizeof(SElemType)); if(!(*S).base) exit(OVERFLOW); /* 存储分配失败 */ (*S).top=(*S).base+(*S).stacksize; (*S).stacksize+=STACK_INCREMENT; } *((*S).top)++=e; } Status Pop(SqStack *S,SElemType *e) { if((*S).top==(*S).base) return ERROR; *e=*--(*S).top; return OK; } ;⑤程序的运行;通过本次项目实践学到了 掌握了用高级语言实现算法的基本步骤和方法 对于应用顺序栈的知识解决和分析问题的能力有了新的理解 提高了理论和实际相结合的能力 ;谢 谢 !

文档评论(0)

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

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

1亿VIP精品文档

相关文档