数据结构与算法设计报告.docx
- 文档编号:745776
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:24
- 大小:194.96KB
数据结构与算法设计报告.docx
《数据结构与算法设计报告.docx》由会员分享,可在线阅读,更多相关《数据结构与算法设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
数据结构与算法设计报告
《数据结构与算法》
课程设计报告
系别:
计算机与电子系
专业班级:
计算机科学与技术0901班
学生姓名:
王硕
指导教师:
程海英
(课程设计时间:
2011年6月13日——2011年7月1日)
华中科技大学武昌分校
1.课程设计目的………………………………………………………………………2
2.课程设计题目及要求………………………………………………………………2
2.1一元多项式加法、减法、乘法运算的实现………………………………………2
2.2校园导游咨询……………………………………………………………………3
2.3简单文本编辑器设计与实现……………………………………………………3
2.4利用单链表实现学生成绩管理系统……………………………………………4
2.5课程设计要求……………………………………………………………………5
3.详细设计描述………………………………………………………………………5
3.1运行环境…………………………………………………………………………5
3.2系统流程图………………………………………………………………………6
3.3主控main函数……………………………………………………………………7
3.4一元多项式加法、减法、乘法运算的实现………………………………………8
3.5校园导游咨询……………………………………………………………………13
3.6简单文本编辑器设计与实现……………………………………………………17
3.7利用单链表实现学生成绩管理系统……………………………………………23
4.总结………………………………………………………………………………31
4.1开发经验…………………………………………………………………………31
4.2不足之处…………………………………………………………………………32
4.3感谢和心得体会…………………………………………………………………32
参考文献……………………………………………………………………………33
1.
课程设计目的
《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
数据结构课程设计是为数据结构课程独立开设的实践性教学环节。
数据结构课程设计对于巩固数据结构知识,加强学生的实际动手能力和提高学生综合素质是十分必要的。
课程设计的目的:
1.要求学生达到熟练掌握C语言的基本知识和技能。
2.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力。
3.提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
4.培养算法分析能力。
分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。
5.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
2.课程设计题目及要求
2.1一元多项式加法、减法、乘法运算的实现
设计要求:
设计一个程序,能够完成两个一元多项式作加法、减法、乘法,给出明确的等式形式。
设计思路:
使用顺序存储结构储存多项式各项的系数与指数,利用线性表的插入、删除等功能就能完成多项式的加法、减法、乘法运算。
2.2校园导游咨询
设计要求:
设计一个校园导游程序,为来访的客人提供各种信息咨询服务,包括:
1.设计所在的学校的校园平面图,所含景点不少于5个。
以图中顶点表示校内各景点,存放景点的名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2.为来访客人提供图中任意景点相关信息的咨询。
3.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
设计思路:
利用图的顺序存储结构将校园内各景点间关系用邻接矩阵的方式存储到计算机,图的顶点能够表示各个景点,各顶点的连线上的权值表示两个景点之间的距离。
利用Floyd算法求出两个景点的最短路径,并将路径长度及经过各点显示出来。
2.3简单文本编辑器设计与实现
设计要求:
输入一页文字,采用动态存储结构存储一页文章,每行最多不超过80个字符,共N行。
功能如下:
1.分别统计出其中英文字母数和空格数及整篇文章总字数。
2.统计某一字符串在文章中出现的次数,并输出该次数。
3.在指定行前插入文本,删除指定行文本。
4.查找定位某个单词在文本中的位置。
5.装入和保存文本。
设计思路:
利用双向链表存储结构存储文章,每行文字存储在数组中,不超过80个字,行数保存为num。
对每行文本从头到尾进行循环,读入一个字符进行计算以统计文本中的中英文字母数和空格数及整篇文章的总字数。
通过对数组中字符串的操作完成查找定位的功能。
通过对每行文本行号的处理能够完成删除一行或在某行前插入文本的功能。
2.4利用单链表实现学生成绩管理系统
设计要求:
利用单链表存储结构实现学生成绩管理系统,支持基本的数据录入、删除、查找、修改、统计和文件读写功能。
整个系统由五大功能模块组成:
1.输入记录:
主要完成将数据存入单链表中的工作。
2.查询记录:
可按学生的姓名或学号查询。
3.更新记录:
对记录的修改、删除、插入、排序。
4.统计记录:
完成对各门功课最高分和不及格人数的统计。
5.输出记录:
实现屏幕显示和将单链表中存储的记录信息写入数据文件中。
设计思路:
采用模块化设计的方法,将本系统分为输入模块、查询模块、更新模块、统计模块和输出模块。
分别对每个模块进行设计,最后利用统一调用的函数就能完成系统的复杂功能。
输入模块将学生姓名、学号、各科成绩等数据存入单链表中。
查询模块通过对学生的姓名、学号在单链表中进行查询,若能找到满足查询条件的记录,就返回该学生记录的指针,否则返回NULL空指针。
更新模块能够完成特定记录的修改、删除、插入和排序。
统计模块可以按照学生各门功课的最高分数或不及格人数进行统计。
输出模块能够将单链表中存储的数据显示在终端或导出到数据文件中。
2.5课程设计要求
数据结构课程设计用C编程实现。
课程设计的一般步骤:
1.问题描述与分析:
根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?
限制条件是什么?
2.数据结构设计:
为实现每个功能选择的逻辑结构和存储结构,分析原因及合理性。
3.软件结构设计:
设计软件模块之间的结构。
4.算法设计:
算法的设计及算法分析。
每个部分的算法设计说明,可以用流程图描述算法。
5.程序编码:
把详细设计的结果进一步求精为程序设计语言程序。
源程序要按照软件工程的规则来编写,要求结构清晰,重要功能部分要加上清晰的程序注释。
6.调试分析:
掌握调试工具的各种功能,设计测试数据,测试输出的结果。
并进行算法的时间复杂度和空间复杂度的分析。
7.总结:
课程设计过程的收获,遇到问题以及解决问题的思路和方法,程序调试能力的思考,对数据结构这门课程的认识及思考等。
8.编写课程设计报告
3.详细设计描述
3.1运行环境
开发环境:
MicrosoftVisualC++6.0。
VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
VisualC++6.0提供的控制台应用程序对学习和掌握标准C++内容非常有利。
“可视”的资源编辑器与MFC类以及应用程序向导,为快速高效地开发出功能强大的Windows应用程序提供了极大的方便。
利用VisualC++6.0进行Internet、数据库及多媒体等多方面的程序开发也很容易。
3.2系统流程图
3.3主控main函数
进入while
(1)主循环
输入(0-4)中的一个数值,选择相应操作
是
否
判断键值,调用相应函数,完成对应功能
进入主界面中后能够选择0-4功能,按对应按键就能够通过调用相关函数实现对应功能。
3.4一元多项式加法、减法、乘法运算的实现
typedefstruct
{
floatcoe;//多项式系数
intexp;//多项式指数
}term,elemType;
typedefstruct
{
termterms[MAXSIZE];//线性表中的数组元素
intlast;
}seq;
进入while
(1)循环
调用menupol()函数显示菜单
否
提示用户先输入多项式
是
输入0-5选择相应功能
是
否
判断键值,调用相应函数,完成对应功能
intstatuspol(pol*p)函数的功能为判断当前多项式的状态。
如果当前多项式不存在则返回-1,如果当前多项式为空则返回0,如果当前多项式不为空则返回1。
该函数在以下几个函数中有很重要的作用。
pol*initpol()函数的功能为初始化顺序存储结构的多项式,并返回顺序表表示的多项式的首地址。
若内存空间满无法创建新顺序表则返回NULL,不为满则返回创建的多项式p。
voidresetpol(pol*p)函数的功能为重置一个多项式。
利用if循环清空p->last直到利用statuspol(p)函数判断函数当前状态为空为止。
intlocpol(pol*p,termx)函数的功能为在多项式p中查找与x项指数相同的项是否存在,存在则返回1,不存在则返回0。
在查找前先调用statuspol(p)函数判断当前多项式是否为空,若为空则直接返回0,若不为空则继续查找。
intinspol(pol*p,termx)函数的功能为在多项式p中插入一个指数项x,并使多项式按照指数降序排列。
intcreatepol(pol*p,intn)函数的功能为创建一个包含n项系数和指数的一元多项式的有序表p,程序依次判断多项式是否不存在、项数是否大于MAXSIZE的限制,若满足以上条件则进入循环输入n项系数和指数。
循环结束后返回1表示创建成功。
charcompare(termterm1,termterm2)函数的功能为判断两个项指数之间的大小关系。
若term1指数项大于term2指数项则返回大于号‘>’,若term1指数项小于term2指数项则返回小于号‘<’,若term1指数项等于term2指数项则返回等于号‘=’。
该函数在下面的函数中有重要作用。
pol*addpol(pol*p1,pol*p2)函数的功能为将多项式p1与p2相加并生成一个新的多项式,然后将其返回。
首先判断两个多项式中是否有多项式不存在,然后利用compare函数判断多项式各项的指数大小,若指数项不相等,则将指数项大的一项存入新创建的p3中,若两项指数相等,则将两项系数相加后存入p3中。
若相加结束后某个多项式有剩余项则将剩余项全部存入p3中。
pol*subpol(pol*p1,pol*p2)函数的功能为将多项式p1与p2相减并生成一个新的多项式,然后将其返回。
首先判断两个多项式中是否有多项式不存在,然后将多项式p2中的每一项变为相反数并存入新创建的p3中,然后将p1与p3进行相加就能完成减法操作。
pol*mulitpol(pol*p1,pol*p2)函数的功能为将多项式p1与多项式p2相乘并生成一个新的多项式,然后将其返回。
首先判断两个多项式中是否有多项式不存在,然后创建若干个空多项式,将每项相乘的结果存入空多项式中然后将新生成的p3与若干个空多项式相加就能完成乘法运算。
voidprintpol(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 设计 报告