括号匹配算法(Parenthesis matching algorithm).doc

括号匹配算法(Parenthesis matching algorithm).doc

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

括号匹配算法(Parenthesis matching algorithm) 括号匹配算法.txt #包括 stdio. h #定义为16 typedef struct { int数据[为]; 栈的顶部; int基地; } seqstack;/ * * /顺序栈的定义 以下为函数声明/ * * / 无效initstack(seqstack *); int空(seqstack *); 无效的推(seqstack *,int); 国际流行(seqstack *); int GetTop(seqstack *); 操作(int,char,int int); 字符(字符、字符)进行; int(char); 国际evalexpres(void); 定义两个栈分别存放运算符和操作数/ * * / seqstack stackr,stackd; 主函数/ * * / 国际main() { int v; ch; 而(1) { printf(“不@@@@@@@@本程序的功能为:用顺序栈实现整型算术表达式的求值@@@@@@@@ \n”); printf(“不@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - 20-10-07 17:47 - @@@@@@ \n”); V = evalexpres(); printf(“结果:%d”,V); 以下为程序控制/ * * / printf(“ninput Q退出和进入再跑:“); 做{ scanf(“%c”,和CH); 如果(CH = =“Q”| | CH = =“Q”) 退出(0); }而(CH!= \n); 系统(“华彩”); } 返回0; } 无效initstack(seqstack *) { -顶= 0; S -基础= 0; } /*初始化栈*/ int空(seqstack *) {如果(S -顶= = S -基地) 返回1; 其他的 返回0; } /*判断栈是否为空*/ 无效的推(seqstack *,int x) { 如果(S -顶= = MAXSIZE) { printf(“过流!\n”); 退出(0); } 其他的 { -数据[顶] = x -; S -顶+ +; } } /*进栈*/ 国际流行(seqstack *) { int E; 如果(空(S)) { printf(“流下!\n”); 返回0; } /*下溢*/ 其他的 { -顶; E = S -数据- [顶]的; 返回E; } } /*出栈*/ int GetTop(seqstack *)/ * * /取栈顶元素 { 如果(空(S)) { printf(“流下!\n”); 返回0; } 其他的 回报-数据- [ 2 ]; } 国际evalexpres(void)/ * * /表达式求解函数 { a,b,i = 0,S = 0; char c [ 80 ],R; initstack(与stackr); 推(与stackr,“#”); initstack(与stackd); printf(“请输入表达式并以”#”结束:”); 获取(C); 而(C [我]!=“#”| |公司(与stackr)!=“#”) { 如果(!在(C [我]))/ * * /判断读入的字符不是运算符是则进栈 {如果(C [我] =“0” C [我] =“9”) { + = C [我] - 0; 而(!(C + +中的[我]))/ * * /此处实现的功能为当输入的数字为多位数时 { * = 10; + = C [我] - 0; } 推(与stackd,S + 0); S = 0; } 其他的 { printf(“你输入的表达式有误!\n”); 返回0; } } 其他的 开关(进行(公司(与stackr),C [我]))/ * * /此函数用来比较读取的运算符和栈顶运算符的优先级 { “”:栈顶的元素优先级高/ * * / 推(与stackr,C [我]); 我+ +; 打破; “=”:遇到匹配的小括号时则去掉他/ * * / 流行(与stackr); 我+ +; 打破; “”:栈顶的优先级低则出栈并将结果写入栈内/ * * / R =流行(与stackr); a流行(与stackd)- 0; B =流行(与stackd)- 0; 推(与stackd,操作(a,r,b)); 打破; } } 回报(公司(与stackd)- 0”);/*返回运算结果*/ } int(char c)/ *问题2:解决在函数问题:判断C是否为运算符是返回否则返回0 / 1 { ch [ 7 ] = {“+”、“-”、“*”、“/”、“# 、(,) }; int i; 为(i = 0;i 7;i++) 如果(C = = CH [我]) 返回1

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档