括号配对的程序设计与实现1.docx
《括号配对的程序设计与实现1.docx》由会员分享,可在线阅读,更多相关《括号配对的程序设计与实现1.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河南工程学院数据结构与算法课程设计成果报告括号配对的程序设计与实现2014年12月29日(5) Pop(SeqStack *S,StackElementType *x) 将栈 S 的栈顶元素弹出放 到X所指的存储空间中GetTop(SeqStack *S,StackElementType *x)将栈 S 的栈顶元素弹 出放到X所指的存储空间中 但栈顶指针保持不变(6) Match(char ch,char str) 进行括号的匹配BracketMatch(char *str)str口中为输入的字符串 利用堆栈技术来检查该字符串中的括号是否匹配二、核心代码判断括号是否匹配:str口中为输入的字符
2、串,利用堆栈技术来检查该字符 串中的括号是否匹配,使用for循环对字符串中的字符逐一扫描,用Match判 断两个括号是否匹配,己匹配的左括号出栈,如果不匹配输出其结果结束;假设 匹配,那么输出匹配。void BracketMatch(char *str)(SeqStack S;int i;char ch;lnitStack(&S);for(i=0; stri!=O,; i+) switch(stri) casecase T:casePush(&S,stri);break;casecase T:caseif(lsEmpty(&S)printf(n 右括号多余!n);return; else (G
3、etTop(&S,&ch);if(Match(ch,stri)Pop(&S,&ch);else printf(n对应的左右括号不同类!n);return;/*switch*/*for*/if(lsEmpty(&S)pnntf(n 括号匹配!n);else printf(n 左括号多余!n“);3程序清单#defineTRUE 1#define FALSE 0#define Stack_Size 50#define StackElementType charinclude stdio.htypedef struct(StackElementType elemStack_Size;int top;
4、SeqStack;void lnitStack(SeqStack *S)(S-top = -1;)int lsEmpty(SeqStack *S)(return(S-top=-l?TRUE:FALSE);int lsFull(SeqStack *S)(return(S-top=Stack_Size-l?TRUE:FALSE);int Push(SeqStack *S,StackElementType x)(if(S-top=Stack_Size-l) return(FALSE);S-top+;S-elemS-top = x;return(TRUE);int Pop(SeqStack *S,St
5、ackElementType *x)(if(S-top = -1)return(FALSE);else *x = S-elemS-top;S-top-;return(TRUE); int GetTop(SeqStack *S,StackElementType *x) (if(S-top = -1)return(FALSE);else *x = S-elemS-top;return(TRUE);)int Match(char ch,char str) (if(ch=( & str=T) return TRUE; else if(ch= & str=T) return TRUE; else if(
6、ch= & str=) return TRUE; else return FALSE;)void BracketMatch(char *str)(SeqStack S;int i;char ch;lnitStack(&S);for(i=0; stri!=O; i+) switch(stri) casecase T: casePush(&S,stri);break;case ) case case if(lsEmpty(&S) (printf(n 右括号多余!n“);return; else ( GetTop(&S,&ch); if(Match(ch,stri) Pop(&S,&ch); els
7、e printf(n对应的左右括号不同类!n“); return;)/*switch*/ /*for*/if(lsEmpty(&S)printf(n 括号匹配!n“);else printf(n 左括号多余!n“); void main() 10*括号匹配的检验printf(n);printf(”请输入算数表达式:);gets(str);BracketMatch(str);printf(谢谢使用!n“);11char str100; printf(4测试4.1 测试数据(1) a* (b+c) * (b-d) =(2) a* (b+c)*(b-d)二4. 2测试结果分析输入的表达式为:a*(b
8、+c)*(b-d)二,图4-1为程序运行后的表达式中括号匹 配正确的结果,表达式正确;图4-1输入的表达式为:a*(b+c)*(b-d)二,图4-2为程序运行后的表达式中括号的左括号多余的结果,即括号匹配错误,表达式有错误;图4-2125总结这次课程设计是运用C语言以及这学期所学习的数据结构完成的。数据结构 是有某一数据元素的集合和该集合中的数据元素之间的关系组成。我做的课题 是:编一个程序判断括号是否匹配。通过这次的编程实训,让我受益较多,更进一步的了解和掌握顺序栈的类型 定义方法,顺序栈的操作和应用以及栈先进后出操作原那么在解决实际问题中的应 用;也认识到了自己在数据结构方面的漏缺之处,同
9、时也增强了自我学习的能力, 相信我通过这次的实训可以让我在以后更好的学习编程!13参考文献严蔚敏等.数据结构(C语言版)清华大学出版社朱战立.数据结构一使用C语言(第四版).电子工业出版社吴跃.数据结构和算法.机械工业出版社周海英等.数据结构与算法设计(第二版).国际工业出版社14题目括号配对的程序设计与实现考核工程考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、 基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答以下问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10分)严格按照
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 括号 配对 程序设计 实现
限制150内