- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录
1 问题描述
1 问题描述
2
题目 2
问题 2
1.3 要求
1.3 要求
2
2 设计 2
存储结构设计 2
2.2 主要算法设计 3 2.3 测试用例及测试结果 6
2.2 主要算法设计
3
2.3 测试用例及测试结果
6
3 调试报告
9
4 对设计和编码的讨论和分析 2..1.
设计 2..1..
对编码的讨论 2..1.
5 总结和体会 2..3
附录一 2..4
本科生课程设计成绩评定表
错...误... !未定义书签
数据结构课程设计
——判别括号配对
问题描述
题目:
判别括号配对
问题:
一个算术表达式含圆括号、中括号、花括号 ,且它们可任意嵌套使用。写一程序,判断 任一算术表达式中所含括号是否正确配对。
要求:
(1)表达式从键盘输入。
(2)利用栈求解此问题。
(3)测试用例自己设计。
设计
存储结构设计
题目要求利用栈来求解此问题,因此选择顺序栈作为存储结构,具体表示如下:
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{ char *base; char *top;
int stacksize;
}SqStack;
主要算法设计
2.2.1 算法思想
文字描述
从键盘输入一个表达式;
逐个扫描表达式中的字符;
当遇到左括号时,将左括号入栈;
继续扫描,将此后遇到的第一个右括号与栈顶元素比较,若匹配,则栈顶元素出栈; 否则,继续扫描; 当整个表达式扫描完以后,判断栈内是否还有元素,若有,则括号不匹配; 若栈为空,则括号配对成功;
在括号配对不成功的情况下,利用栈顶栈底元素的差值,可以对左右括号数进行比较
流程图表示
}
}
算法
void CharIsCorrect(char a[]){
SqStack S;
char e;
int n,c;
InitStack(S);//建立一个空栈
n=strlen(a);// 求表达式长度
int d=0,b=0;
for(int i=0;in;i++){ if((a[i]==()||(a[i]==[)||(a[i]=={))
Push(S,a[i]);
else{
c=StackEmpty(S);
if ((c==1)((a[i]==))||(a[i]==])||(a[i]==})))// 栈为空且当前扫描的字符为右括 号时,右括号多于左括号
++b;
else{
e=GetTop(S);
if (((a[i]==))(e==())||((a[i]==])(e==[))||((a[i]==})(e=={)))// 括号匹配时满足的条件
e=Pop(S);
else if ((a[i]==))||(a[i]==])||(a[i]==}))
++d;
2)表达式不含除括号外其他字符且左括号少于右括号的情况:
2)表达式不含除括号外其他字符且左括号少于右括号的情况:
}// 扫描字符串,左括号进栈,右括号出栈
if(StackEmpty(S)==1(b==0)(d==0))
cout 左右括号配对正确 endl;// 栈为空时,括号匹配
else cout 左右括号不匹配且左括号与右括号个数差为 S.top-S.base-d-b
个 endl;// 正数表示左括号比右括号多,负数则相反
测试用例及测试结果
1)表达式不含除括号外其他字符,配对正确的情况:
4)表达式含任意字符且左右括号个数相同但配对不成功的情况:
5)表达式仅含括号且括号个数相同单不匹配的情况:
6)表达式仅含括号且左括号对于右括号的情况:
调试报告
本次课程设计, 主要的调试过程在于对于判别函数的调试, 但是除此之外, 由于编译过 程中发现了一些错误,对于栈的一些基本操作,以及 main 函数,也进行了调试,其中遇 到的主要问题如下:
(1)大小写出错
解决办法:将所有小写 s 改为大写 S 即可
(2)在写“判断栈是否为空”的操作时,将函数的类型标示符写错,导致了如下错误:
解决办法:将“void”改为i“nt ”后,能够正常运行
(3)判断配对函数中的形参是字符数组,但是从键盘中输入的是字符串,因此在主函数
中,当用 cin 进行输入时出错:
解决办法:将 char a 改为 char a[20] 后编译不出现错误
除了以上错误之外,还有一些小错误,编号如下:
Error C 2146、 error C 2143 、 error C 2109 等等,一般再仔细检查后,能够检出错 误。
以下,对主要程序进行调试,过程如下:
第一次成型的主体部分代码如下:
void CharIsCorrect(char a[]){
SqStack S;
您可能关注的文档
- AWAB环境振动使用说明(20201115211057).docx
- 七年级上册生物第二单元第一章细胞是生命活动的基本单位知识梳理总结.docx
- 中考语文复习2.《西游记》精读和跳读.docx
- 什么是职业道德的主要内容.docx
- 所有交通标志图片大全.docx
- 手术操作步骤流程示范急性阑尾炎手术的操作.docx
- 手袋英语词汇.docx
- 执业药师继续教育考试(部分答案).docx
- 扬州市邗江区2019-2020学年度第一学期期末考试试题八年级语文(含答案).docx
- 承插式球墨铸铁管安装施工方案83517.docx
- 8 黄山奇石(第二课时)课件(共22张PPT).pptx
- 22《纸船和风筝》教学课件(共31张PPT).pptx
- 17 松鼠 课件(共23张PPT).pptx
- 23《海底世界》课件(共28张PPT).pptx
- 21《大自然的声音》课件(共18张PPT).pptx
- 第12课《词四首——江城子 密州出猎》课件 2025—2026学年统编版语文九年级下册.pptx
- 第2课《济南的冬天》课件(共42张PPT) 2024—2025学年统编版语文七年级上册.pptx
- 17 跳水 第二课时 课件(共18张PPT).pptx
- 第六单元课外古诗词诵读《过松源晨炊漆公、约客》课件 统编版语文七年级下册.pptx
- 统编版六年级语文上册 22《文言文二则》课件(共27张PPT).pptx
原创力文档


文档评论(0)