数据结构课程设计括号匹配问题Word文档下载推荐.docx

上传人:b****5 文档编号:16440106 上传时间:2022-11-23 格式:DOCX 页数:12 大小:19.39KB
下载 相关 举报
数据结构课程设计括号匹配问题Word文档下载推荐.docx_第1页
第1页 / 共12页
数据结构课程设计括号匹配问题Word文档下载推荐.docx_第2页
第2页 / 共12页
数据结构课程设计括号匹配问题Word文档下载推荐.docx_第3页
第3页 / 共12页
数据结构课程设计括号匹配问题Word文档下载推荐.docx_第4页
第4页 / 共12页
数据结构课程设计括号匹配问题Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据结构课程设计括号匹配问题Word文档下载推荐.docx

《数据结构课程设计括号匹配问题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计括号匹配问题Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

数据结构课程设计括号匹配问题Word文档下载推荐.docx

(4)根据设计规范撰写报告并按时提交;

(5)设计内容用A4纸打印并按要求装订。

四、课程设计(论文)进程安排

序号

设计(论文)各阶段内容

地点

起止日期

1

搜集资料

图书馆

11.24-11.26

2

需求分析

11.27-11.30

3

系统分析与设计

12.1-12.4

4

功能模块的实现

综702机房

12.5-12.15

5

系统测试,运行

12.16-12.19

6

完成课程设计(论文)

12.20-12.27

五、应收集的资料及主要参考文献

【1】周海英.马巧梅.数据结构与算法设计(第二版).国际工业出版社2005

【2】朱战立.数据结构---使用C语言(第四版).电子工业出版社2009

【3】吴跃.数据结构和算法.机械工业出版社2010

发出任务书日期:

2010年11月23日指导教师签名:

计划完成日期:

2010年12月27日教学单位责任人签章:

1设计内容1

2算法思想描述1

3算法及程序实现2

4算法测试及结果4

5总结8

参考资料9

设计内容:

算法要求:

算法思想

在算术表达式中,右括号和左括号匹配的次序正好符合后到的括号要最先被匹配的“后进先出”堆栈操作特点,因此可以借助一个堆栈来进行判断。

括号匹配共有以下4种情况:

1左右括号配对次序不正确;

2右括号多于左括号;

3左括号多于右括号;

4左右括号配对正确;

具体方法如下:

顺序扫描算术表达式,当遇到3种类型括号的左括号时,让该括号进栈。

当扫描到某一种类型的右括号时,比较当前栈顶括号是否与之匹配,若匹配,则退栈继续进行判断;

若当前栈顶括号与当前扫描的括号不相同,则左、右括号配对次序不正确;

若字符串当前为某种类型右括号而堆栈已空,则右括号多于左括号;

字符串循环扫描结束时,若堆栈非空,则说明左括号多于右括号;

如果上述三种情况都没有出现,则说明左、右括号匹配正确。

算法以及程序实现

主函数设计如下:

VoidExpIsCorrect(charexp[],intn)//判断有n个字符的字符串exp左、右括号是否配对正确

{

SeqStackmyStack;

//定义顺序堆栈变量myStack

inti;

charc;

StackInitiate(&

myStack);

//初始化堆栈

for(i=0;

i<

n,i++)

{

if((exp[i]=='

('

)||(exp[i]=='

['

]||(exp[i]=='

{'

))

StackPush(&

myStack,exp[i]);

//入栈

elseif(exp[i]=='

)'

&

StackNotEmpty(myStack)

&

StackTop(myStack,&

c)&

c=='

StackPop(&

myStack,&

c);

//出栈

c!

='

{

printf("

左右括号配对次序不正确!

\n"

);

return;

}//判断括号

elseif(exp[i]=='

]'

}//判断方括号

}'

}//判断花括号

elseif(((exp[i]=='

))

!

StackNotEmpty(myStack))

{

右括号多于左括号!

}

}

if(StackNotEmpty(myStack))

左括号多于右括号!

);

else

左右括号匹配正确!

算法测试以及测试结果

函数头文件(SeqStack.h):

typedefstruct

DataTypestack[MaxStackSize];

inttop;

}SeqStack;

voidStackInitiate(SeqStack*S)/*初始化顺序堆栈S*/

S->

top=0;

/*定义初始栈顶下标值*/

intStackNotEmpty(SeqStackS)

/*判顺序堆栈S非空否,非空则返回1,否则返回0*/

if(S.top<

=0)return0;

elsereturn1;

intStackPush(SeqStack*S,DataTypex)

/*把数据元素值x压入顺序堆栈S,入栈成功则返回1,否则返回0*/

if(S->

top>

=MaxStackSize)

堆栈已满无法插入!

\n"

return0;

stack[S->

top]=x;

top++;

return1;

intStackPop(SeqStack*S,DataType*d)

/*弹出顺序堆栈S的栈顶数据元素值到参数d,出栈成功则返回1,否则返回0*/

top<

=0)

堆栈已空无数据元素出栈!

top--;

*d=S->

top];

intStackTop(SeqStackS,DataType*d)

/*取顺序堆栈S的当前栈顶数据元素值到参数d,成功则返回1,否则返回0*/

if(S.top<

堆栈已空!

*d=S.stack[S.top-1];

测试函数如下:

#include<

string.h>

stdio.h>

#defineMaxStackSize100

typedefcharDataType;

#include"

SeqStack.h"

VoidExpIsCorrect(charexp[],intn)//判断有n个字符的字符串exp左、右括号是否配对正确

voidmain(void)

chara[]="

(())abc{[]()}"

;

//测试例子1

charb[]="

(()))abc{[]}"

//测试例子2

charc[]="

(()()abc{[]}"

//测试例子3

chard[]="

(())abc{[]}"

//测试例子4

intn1=strlen(a);

intn2=strlen(b);

intn3=strlen(c);

intn4=strlen(d);

ExpIsCorrect(a,n1);

ExpIsCorrect(b,n2);

ExpIsCorrect(c,n3);

ExpIsCorrect(d,n4);

测试结果:

左括号配对次序不正确!

7

总结

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说指针和堆栈的使用。

通过这次课程设计之后,我又把前面所学过的知识又重新温故了一遍。

我做的课题是:

编一个程序判断括号是否匹配。

我发现编程是一件很枯燥很无聊的事情,但是我强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。

而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。

所以认真仔细就是非常重要的了。

开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。

很庆幸最终我完成了这个作业

通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,比如说经常漏写分号和把中文的标点符号写进去程序里面,但是我会在接下来的学习中改掉这些毛病也会更加注视实践操作,使自己能够把这门课程学好。

8

参考文献

【4】周海英.马巧梅.数据结构与算法设计(第二版).国际工业出版社2005

【5】朱战立.数据结构---使用C语言(第四版).电子工业出版社2009

【6】吴跃.数据结构和算法.机械工业出版社2010

9

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说是无处不在。

回顾起此次课程设计,至今我仍感慨颇多,从拿到题目到完成整个编程,从理论到实践,在这将近半个月的日子里,我学到了很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,而且我还发现自己对堆栈以及指针了解的不够透彻。

不过做课程设计难免会遇到过各种各样的问题,但是很庆幸,我并没有放弃,我还是坚持完成了这次课程设计。

 总的来说,这次课程设计确实学到很多,不仅锻炼了我遇到问题解决问题的勇气和能力,还练就了遇到挫折不达目的不罢休的韧性,这在以后的工作与学习中将会非常重要。

2010年12月27日

年月日

年月日

10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1