ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:140.33KB ,
资源ID:12051828      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12051828.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(4课程设计说明书范文.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

4课程设计说明书范文.docx

1、4课程设计说明书范文前言1.1设计背景和意义1.1.1数据结构简介数据结构是计算机程序设计的重要理论设计基础,它不仅是计算机学科的核心课程,而且成为其他理工专业的热门选修课。数据结构是计算机存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算法。比如在计算机中央处理器中,CPU接到一个中断请求便会停下当前正在执行的指令去处理这个中断请求完成中断操作,首先要做的就是保护现场。保护现场需要将下一条指令的地址指针和当前指令返回地址等重要的数据进行存储。在众多的数据结构中,这些重要的数据被存储到栈这个数据结构中。1.1.2选择算法的原因在许多类型的程序的设计中,数据结

2、构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。1.2设计的原理和内容本次程序设计采用C语作为描述和实现算法的程序语言,主要的设计思路就是完成对栈的操作,如栈的插入、删除、取栈顶等等,这些操作都是通过C语言程序来实现的。最后的结果就是运行程序时能够完成对以上设计的操作。工程概况2.1 项目所用的时间从这个项目开始到结束总共历时十天。完成于2012年6月

3、26日。2.2项目负责人汪涵,女,计算机科学与技术14-1,学生。2.3项目指导人朱赖红,男,信息工程学院教师,副教授。正文栈是这样一种数据类型,其主要属性是由支配其元素的插入与删除的规则来决定的,被删除或移去的元素只能是最后插入的,即所谓具有后进先出(LIFO)性质或规范。3.1 设计的目的和意义我们是计算机科学与技术专业的本科生,数据结构是我们重要的必修课程。当代社会学要大学培养出理论扎实,动手实践能力强的大学生。所以,本次课程设计的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认识。为后继课程的学习打下坚实的基础。马克思主义唯物辩证法认为,实践

4、是连接客观实在和人主观意识的通道和桥梁。物质对意识的作用以及意识对物质的反作用都蕴含在实践活动当中。也就是,实践是检验真理的唯一标准。对这门课的学习状况的好坏,用一次课程设计便可以检验出来。而这,就是本次我们进行设计的意义之所在。3.2 目标和总体方案栈是一种受限制的线性表,具体表现在访问栈的只能按照“后进先出”的原则,即压入栈的数据元素不能以任意的方式进行访问和弹出栈。最先进入栈的数据元素若要弹出堆栈只能等到其上一个数据元素出栈以后方可出栈。本次设计的目标在于将栈的这一特殊的访问规则和特殊的操作用程序语言形象地再现和描述出来。于是特制订了一个总体的方案。由于时间只有十天,故做了如下的计划安排

5、,将这项工程分为两大部分:程序的设计和程序的调试。首先在程序的设计部分由分为几个步骤:第一步:查阅有关数据结构栈操作的资料,用半天的时间。第二步:设计这个项目的整体架构和算法。用一到两天的时间。第三步:选择一门程序设计语言进行算法的描述。两天的时间。其次,进行程序的调试。用一天。3.3 设计方法和内容“工欲善其事,必先利其器”。有了总体方案后必须用一个事半功倍的设计方法来提高程序设计的效率。在这个项目的设计上,笔者选择了语言作为算法的描述语言,因为语言具有丰富的表达能力以及代码的高效性,并且有着良好的移植性和灵活性。同时,采用“自顶向下,个个击破”的程序设计思路和思想,充分运用语言强大的功能。

6、笔者将这个项目整体设分成了两个模块。一个是功能函数模块群,主要实现设计方案中的具体功能,是整个项目的执行部分;另一个是主函数模块,主要实现对数据流和控制流的控制,使整个项目的控制部分。这两大模块有机的结合共同构成了这个项目的全部面貌。3.3.1 硬件环境微型计算机:联想台式品牌机中央处理器:Pentuim 4 主频:3.0GHz主存容量: 512M硬盘容量: 80G3.3.2软件环境Windows XP 操作系统Microsoft NotePad 记事本程序Microsoft Visual C+编译器3.3.3 设计流程图图3-1 程序流程图3.3.4设计内容一、程序设计的基本算法介绍1、栈是

7、一种只能在叫做栈的一段进行进栈或者出栈操作的线性数据结构。栈的主要特点是”后进先出”,即后进栈的元素先处理。2、栈的基本操作: (1) 置空栈 initStack(s); 设置一个空栈S。 (2) 进栈push(S,x):将元素x进到栈S中。 (3) gettop(S,x):将栈s的栈顶元素赋给x,栈指针递减。 (4) pop(s,x): 将栈s的栈顶元素赋给x,栈指针递减。 (5) 判断栈空stackempty(s):若栈为空,返回1,否则返回03、通常栈用顺序表存储,分配一块连续的内存区域存放栈中元素,并用一个变量指向当前的栈顶。假设栈的元素个数最大不超过整数MaxSize,所有的元素都具

8、有同一数据类型ElemType,则可用下列方式来定义栈类型stack:Typedef structElemtype eMAXSIZE;Int top;Stack;二、程序中涉及的基本算法 栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO表。1、进栈(PUSH)算法 (1)若TOPn时,则给出溢出信息,作出错处理(进栈前首先

9、检查栈是否已满,满则溢出;不满则作); (2)置TOP=TOP+1(栈指针加1,指向进栈地址);(3)S(TOP)=X,结束(X为新进栈的元素); 2、退栈(POP)算法 (1)若TOP0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作); (2)X=S(SOP),(退栈后的元素赋给X); (3)TOP=TOP-1,结束(栈指针减1,指向栈顶)。3.4 程序的设计思想和内容3.4.1程序设计的初始运行环境这个项目是由主函数模块和功能函数模块组成的。其中主函数模块是项目的控制部分,很重要的一个作用就是对整个程序的初始化功能。在设计初始运行环境时,为了每一次栈操作后都可

10、以进行对程序的初始化,采用了dowhile循环语句构成一个无限循环,使得每一次栈操作之后都可以将程序初始化重新选择对栈的另一个操作,例如:选择2,将若干个数据压入栈中之后,程序便又回到了初始的界面,我们可以选择4进行出栈操作。代码如下:main() struct SqStack *q; int number,u=1,n; int i,y,cord; ElemType a; int b100; void OutStack(struct SqStack S); void InitStack(struct SqStack *p); void Push(struct SqStack *p,ElemTy

11、pe x); ElemType Pop(struct SqStack *p); ElemType GetTop(struct SqStack *p); do printf(n); printf(n主菜单: 1 初始化顺序栈 2 插入一个元素 3 删除栈顶元素 4 取栈顶元素 5 退出n); printf(n请选择:); scanf(%d,&cord); switch(cord) case 1: /栈的初始化 q=(struct SqStack*)malloc(sizeof(struct SqStack); InitStack(q); OutStack(q); printf(n); break;

12、 case 2: /入栈操作 printf(n); printf(请输入你想插入数据的个数:); scanf(%d,&number); printf(n你所要插入的数据个数为 %d 个n,number); printf(n); while(u=number) printf(n请输入要插入的数据 a=); scanf(%d,&a); printf(n这是你第 %d 个输入的数据: ,u); printf(n); bu=a; Push(q,a); u+; printf(n你的输入顺序为:n); printf(n); printf(n); for(n=1;n=number;n+) printf(第%

13、2d个输入的是:%6dn,n,bn); printf(n入栈的顺序:n); printf(n); printf(n); OutStack(q); printf(nn入栈操作结束,现在栈中已经有 %d 个数据,结果见菜单栏上部!,number); printf(n); break; case 5: exit(0); while (cord=5);具体运行截面如下图:图3-2 界面的循环初始化3.4.2栈的初始化在栈的初始化时,采用置空栈的形式,其具体代码如下:void InitStack(struct SqStack *p) if(!p) printf(Eorror); S.top=0; 3.4

14、.3栈的插入栈是一种先进后出的数据类型,所以他的插入是从栈顶,取出也是从栈顶。因此,当运行程序时,选择“2”就会出现填如要插入的内容,在程序运行截面上并会出现插入的结果。具体程序代码及运行后的界面如下:void Push(struct SqStack *p,ElemType x) if(S.topMAX-1) S.top=S.top+1; S.elemS.top=x; else printf(Overflow!n);图3-3 进栈操作3.4.4栈元素的删除栈的删除也是从栈顶,当栈内有内容时,栈顶的元素就可以被取出删除,但是,当栈为空栈时就会输出“Underflow!”提示。具体操作代码如下:E

15、lemType Pop(struct SqStack *p) ElemType x; if(S.top!=0) x=S.elemS.top; S.top=S.top-1; return(x); else printf(Underflow!n); return(0); 图为连续删除栈中两个数据的运行结果:图3-4 栈元素的删除操作图片显示的是连续删除两个元素后栈中的情况。在栈中取出元素并删除是严格遵守“后进先出”原则的。 3.4.5栈的取顶操作栈的取顶主要就是把栈的第一个元素取出来。其具体操作如下:ElemType GetTop(struct SqStack *p) ElemType x; if

16、(S.top!=0) x=S.elemS.top; return(x); else printf(Underflow!n); return(0); 图为将刚才的栈中的数据连续出栈四次的运行结果:图3-5 出栈操作图显示了对栈进行连续四次出栈操作后的结果,和原来的栈对比可以看到出栈的顺序也是严格遵循“后进先出”原则的。3.5 设计创新与关键技术这个课程设计是一个简单的设计,如果说有“设计创新与关键技术”的话,只能勉强说有设计创新,至于关键技术应该谈不上。谈到设计创新,只能说在设计思路、设计方法和设计内容上有别人没有的东西。而所用的技术倒是没有多少。主要是运用了C语言丰富的表达能力,将栈的建立、进

17、栈、出栈等操作形象的反应出来。3.6结论本次设计进展顺利,如期完成,并且达到了预先的设计要求,完全贯彻和执行了设计的总体方案。对于栈的基本操作的描述和实现比较成功。然而,限于时间和水平,这个设计还有很多的不足之处。3.6.1存在的问题 一、没有使用图形的形式描述栈的操作。主要是因为本设计主要是在MicroSoft Visual C+编译器调试,但VC的根目录下的Include文件夹中没有graphics.h这个头文件。因此,在Turbo C下编译成功的地源程序在VC中无法编译通过。二、所有的对栈的操作只能当栈被初始化以后方可进行。当栈被一次初始化后,所有的进栈操作只能进行一次,如果想在进行了其

18、他的栈操作后再次进栈是不行的。3.6.2解决方案一、针对VC中没有graphics.h头文件的问题,可以到互联网上求助高手或自己到图书馆查阅相关的书籍。二、针对进栈要等待初始化的问题,原因在于经过其他的栈操作改变了栈顶指针的位置,而第一次进栈是在空栈的基础之上,而有了数据再想进栈便违反了栈“先进后出”的原则了。可以进行如下操作,将栈的结构体中的栈顶指针定义为一个全局变量或静态变量。这样,便可以保证进栈的不受限制,可随时进栈。参考文献1严蔚敏.吴伟民编著.数据结构(C语言版).清华大学出版社.20062李春葆.曾慧.张植民编著.数据结构程序设计题典.清华大学出版社.20023郭翠英等编著.C语言课程设计案例精编.中国水利水电出版社.20044谭浩强编著.C程序设计.清华大学出版社.20055William Ford.William Topp.Data Structure with C+. 清华大学出版社6许卓群.张乃孝.杨冬青.唐世渭数据结构.高等教育出版社.1988年 7李廉治.姜文清.郭福顺数据结构.大连理工大学出版社.1989年8晋良颍数据结构.人民邮电出版社.2002年

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

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