数据结构课程设计指导书1
《数据结构课程设计方案》指导书
《数据结构课程设计》指导书一、实习目的数据结构课程设计是一项综合性设计活动,要求在教师的指导下,利用本课程内的以及到目前为止所学到的有关知识和技术解决一些不太复杂但却是综合性的问题。
从规模来说,课程设计是在平时作业的基础上进一步扩大的大作业。
在设计中,要求学生要全面考虑相互联系的各个方面及问题。
通过课程设计,使学生对整个课程的知识体系有较深入的理解,在运用本课程的知识解决实际问题方面得到锻炼,对锻炼学生的实践能力以及运用本课程的知识、方法解决更为复杂的实际问题有较好的启发和指导作用,从而为后续课程的学习、毕业设计环节以及将来的实际工作打好坚实的基础。
通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及迄今为止所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。
二、数据结构课程设计要求1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
3.课程设计按照教案要求需要两周时间完成(2周共十天)。
三、实习基本内容本次课程设计完成如下模块(共23个模块,学生可以在其中至少挑选5-6个功能块完成,其中8、9、10、13在做5个以下不算数但已经做了5个以上算数)1 【校园导游程序】问题描述:用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
基本要求:查询各景点的相关信息;查询图中任意两个景点间的最短路径;查询图中任意两个景点间的所有路径;增加、删除、更新有关景点和道路的信息。
计科《数据结构》课程设计指导书
景德镇陶瓷学院科技艺术学院《数据结构》课程设计指导书指导老师:何福保、胡开华2018年12月目录第一节、序言1第二节、课程设计要求1第三节、课程设计论文的格式2第四节、考勤及考核3第五节、课题及任务<题目及要求)4题目 1 运动会分数统计* (4)题目 2 一元多项式计算* (5)题目 3 迷宫求解5题目 4 文章编辑5题目 5 joseph环*6题目 6 建立二叉树,层序、先序遍历<用非递归的方法)** (6)题目 7 扑克牌游戏7题目 8 商品货架管理7题目 9 行文本编辑器7题目10 作业调度9题目11 图<校园导游图)**11题目12 教案计划编编制问题11题目13 航空客运订票系统*12第一节、序言《数据结构》课程设计是为配合课堂教案,使学生进一步掌握《数据结构》课程中有关理论知识,并通过对具体事物的分析,得出抽象的结构<关系),建立数据模型<公式),并最终设计出良好的算法<流程图)。
本次课程设计统一要求用C或者C++言编程并调试<程序设计),以提高学生的程序设计及解决实际问题的能力;并为后续课程学习打下基础。
本次课程设计所列问题,大都与现实生活密切相关,并且其包含了《数据结构》课程中所讲述的基本类型,具有典型意义。
要求学生利用《数据结构》课程有关理论,参考本手册所介绍的软件工程的的相关方法,对不同问题分别进行需求分析,概要设计,然后进行详细设计和代码的编写,并进行测试得出相应软件,最后编写软件说明及课程设计论文。
由于只有二周共十天的时间,为使学生能尽快抓住问题的本质,每个题目不但给出了问题描述,要求,还给出实现提示,以便学生能尽快完成课程设计任务。
第二节、课程设计要求学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。
数据结构课程设计指导书
数据结构课程设计指导一、课程设计要求课程设计是数据结构课程的一个综合实践练习,是有别于课程实验的一个独立实践教学环节。
课程设计一般在课程结束后进行,教学时数为1周。
具体要求如下:1、结合实际问题进一步理解和深化课程理论知识,做到理论与实际相结合。
2、能对实际问题进行分析和抽象,并进行数据结构设计和算法设计,具有初步的分析问题和解决问题的能力。
3、了解软件工程的理论与方法,初步掌握软件开发过程中的需求分析、系统设计、编码、测试等基本方法和技能。
4、进一步强化编程训练,提高程序设计能力。
5、设计内容要有一定的深度和难度,达到一定工作量,代码量不低于500行。
二、课程设计内容课程设计的主要工作如下:1、问题定义与需求分析:根据设计题目的要求,对问题进行分析,确定系统的功能需求和性能需求。
2、数据结构与算法设计:对问题描述中涉及的数据对象定义相应的数据结构,包括逻辑结构、存储定义和主要操作。
对主要算法要进行时间和空间复杂度分析。
3、概要设计:采用面向对象方法设计软件结构,定义类及类之间的关系。
要求系统结构合理、易于实现。
4、详细设计:对数据结构和基本操作做进一步的求精,写出数据存储定义,用程序流程图或伪码对算法进行描述。
5、编码与测试:用C++编程实现系统,并设计测试用例对系统进行测试,修改程序中的错误,形成格式和风格良好的源程序清单。
6、设计结果分析:对系统应用效果进行分析,评价系统的先进性、实际应用价值及在在的问题。
7、撰写课程设计报告。
三、课程设计考核课程设计考核内容包括设计作品和设计报告两个部分。
设计作品包括可运行的源程序(刻录成光盘),系统使用说明,主要程序代码(打印附在课程报告内)。
课程设计报告主要报告系统分析、设计和实现过程,内容如下:1、问题定义及设计要求;2、主要设计内容:详细报告课程设计中所做的主要工作,包括系统分析、概要设计、数据结构设计、算法设计及模块设计和编程及测试等。
3、总结与体会:写出本次课程设计的主要创新点及存在的问题。
《数据结构》课程设计指导书
《数据结构》课程设计指导书一、课程教学目标用所学的数据结构有关理论知识,结合实际问题设计相关算法及程序达到理论与实践相结合的目的(该课程设计为必修课,2学分)。
二、设计目的1、掌握如何利用合适的数据结构和相应的算法来解决实际问题的方法,巩固和掌握《数据结构》这门课的理论知识和实践技能。
2、进一步加强学生的程序设计能力的培养,增强分析问题、解决问题的能力,掌握软件设计思想。
三、教学基本内容及学时安排1、设计内容(1)一元多项式的表示及其运算(要求:包括相加、相减、相乘等运算);(2)集合的表示与运算;(3)航空客运订票系统;(4)马踏棋盘问题(要求,设计算法为非递归算法);(5)算术表达式求值问题;(6)迷宫问题(要求:设计算法为非递归算法);(7)哈夫曼编/译码器;(8)校园导游咨询;(9)图的遍历、最小生成树、拓扑排序、关键路径、最短路径等内容;(10)学生成绩管理系统等;(要求:结合查找、排序思想)说明:从以上内容中任选一个或多个设计内容进行设计,或自选设计题目,但难度应适中,须经指导教师同意。
2、设计要求:在TC或VC环境下进行设计。
四、重要教学环节1、步骤选题----安案设计----详细设计----上机调试----分析结果----写出设计报告2、指导答疑与相关指导教师进行协商。
五、设计进程及要求1、第一周周一进行选题2、第一周周二至周三进行需求分析与概要设计2、第一周周四至第二周周三详细设计并上机调试3、第二周周四写出课程设计说明书并上交4、第二周周五答辩要求:在上机期间不准无故缺勤,有事须向指导教师请假。
六、设计说明书的撰写内容和要求1、说明书的撰写内容:设计题目、设计问题描述、设计方案与概要设计、详细设计、系统运行说明、测试结果、总结分析(包括此系统的优缺点及可进一步完善的功能)、附录(源程序文件清单)。
(格式见附录三)2、要求:图表规范、语言准确、流畅、内容充实,字数5000字左右(包括图表、附录不算)。
数据结构课程设计指导书
数据结构课程设计指导书迷宫求解1.设计目的仅仅认识到栈是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解栈的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方法。
2、问题描述迷宫问题是取自心理学的一个古典实验。
在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。
盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。
对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。
老鼠经过多次试验最终学会走通迷宫的路线。
设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。
图A3.设计要求要求设计程序输出如下:(1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏幕上显示出来;(2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。
(3)用一种标志(如数字8)在迷宫中标出该条通路;(4)在屏幕上输出迷宫和通路;(5)上述功能可用菜单选择。
顺序栈的类型定义如下:# define StackSize 100typedef char datatype;typedef struct {datatype data[stacksize]; int top; }seqstack; seqstack *S;设S是SeqStack类型的指针变量。
若栈底位置在向量的低端,即s–>data[0]是栈底元素,那么栈顶指针s–>top是正向增加的,即进栈时需将s–>top加1,退栈时需将s–>top 减1。
因此,s–>top<0表示空栈,s–>top =stacksize-1表示栈满。
当栈满时再做进栈运算必定产生空间溢出,简称“上溢”;当栈空时再做退栈运算也将产生溢出,简称“下溢”。
《数据结构课程设计》指导书
《数据结构》课程设计指导书沈阳理工大学.信息学院2013.11.1一.目的与意义软件设计能力对计算机专业的学生是很重要。
通过数据结构的学习,使学生对软件编程能力有一定的提高。
数据结构课程设计是锻炼学生在进一步掌握模块化、结构化程序设计的方法的同时,培养学生运用已学知识分析问题、解决问题及编写实用程序的能力,通过对线性化、层次化、网络化数据结构的了解进一步掌握自然数据的结构方式及组织方式,让学生深入体会存储在计算机中的数据及程序中如何运用数据实现编程。
主要目的如下:1.通过本课程设计使学生对面向对象的设计过程有初的认识,并对面向对象的高能语言的学习打下基础,2.通过不同类型的程序设计使学生进一步掌握数据的几种不同的组织和存储方式,为高级编程做准备,3.为专业课的深入学习和毕业设计打基础二.任务和要求分析每一组题目,按要求完成相应的题目:1.题目参照附录中《数据结构课程设计》题目选题。
2. 要求:1)对相应的题目进行算法设计2)编写源代码3)上机调试4)显示调试结果5)写出实验总结3.课程设计说明书设计完成后,将自己选定的题目按上述要求完成课程设计说明书。
课程设计说明书内容包含:题目、要求、初步设计(可以是流程图、功能模块图)、详细设计、程序代码、测试数据、运行结果、遇到的问题及总结几部分。
三.进度安排设计总学时为2周第一周:查阅资料、小组讨论、进行模块划分写出分析报告,画N-S结构化框图,编写程序清单,上机调试.第二周周四、五:验收(计算机机房),并将课程设计报告交上来.四.考核标准与成绩评定方式成绩评定有如下几项参考:1.初步设计内容的考核:是否有查阅资料能力?是否有设计思想?2.程序编码能力调试能力的考核:程序是否清晰、易读?在技算计上是否可独立完成程序的调试,是否熟练?3.说明书质量的考核:设计结构是否合理?叙述是否正确?方案是否可行?4.答辩:设计结果的调试能力,对自己设计是否熟练?5.出勤率极平时表现的考核:出勤超过2次不到者成绩为不及格。
数据结构课程设计
《数据结构》课程设计实践指导书一、实践的目的和任务《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。
开设本课程设计实践的主要目的就是要达到理论与实际应用相结合,提高学生的动手能力,完成计算机应用能力的培养;主要任务是通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及其它所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。
二、实践的内容和要求(一)实践内容实践内容为数据结构课程完成后,运用《数据结构》、程序设计以及其它所学课程中的知识和技术来解决实际的问题。
在解决实际应用性问题时,按照计算机解决问题的步骤进行以下几个方面的工作:采用简明、严格的问题描述,建立模型,设计求解方法,用计算机实现求解方法,最后进行测试和文档制作。
1、建立模型许多问题的最初描述既不精确又不简练,还有一些问题不可能简单而精确地用计算机可求解的形式来描述,即使有些可用计算机求解的问题,也需要在很大范围内确定问题的参数,而那些合理的参数值只有通过实验才能确定。
因此,要用计算机解决问题,必须首先要以简明、严格的方式将问题描述清楚。
数学或其它科学中的几乎所有分支都可作为某一类具体问题的抽象模型。
例如,在涉及到若干对象及其相互间关系的问题时所用的数学模型为图论;数值计算问题中常用的数学模型为线性方程组(用于求解电路的电流强度或结构中的应力)或微分方程(用于预报人口增长情况或化学反应速度等);在符号与文本处理问题时常用字符串及形式语法作为模型(如编译系统)。
《数据结构》课程中所介绍的各种结构均可作为一种模型。
2、构造算法对问题建立了适当的数学模型后,就可以依据这一模型求解。
最初的目标是给出一个算法形式的解法,这是设计的核心部分。
《数据结构》课程设计指导书1
《数据结构》课程设计指导书(共13题)一、课程设计的目的课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。
巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。
为今后学习其他计算机课程打下基础。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。
二、课程设计的要求在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过算法的设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的课程设计与程序分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
三、课程设计的学生分组情况每组三至五人,共同研究、共同讨论,可以共同编写算法,但必须各自独立完成各自的程序。
四、课程设计的时间安排课程设计前两周:将各项任务及问题进行讲解、分析。
课程设计一周:星期一:学生对任务进行讨论、研究与分析,初步设计出算法。
星期二到星期四:设计出详细算法,并上机调试程序。
星期五到星期六:写出课程设计报告并考核。
五、课程设计的主要内容【课程设计题目一】一元稀疏多项式加法、乘法器【问题描述】设计一个一元稀疏多项式加法、乘法器用于计算两个多项式的加法和乘法。
例如(x2+4x5+2x9)+(x+3x4)或(7x4+4x6+2x9)*(x4+3x9)【基本要求】(1)输入并建立两个多项式f(x)和g(x);(2)输出每个多项式,要求输出时按指数从小到大输出。
(3)两个多项式完成加法、乘法运算。
(4)输出两个多项式的加法之和及乘积的结果。
(5)写出课程设计报告【实现提示】用带表头结点的单链表存储多项式。
【测试数据】分别选定三组测试数据进行测试,验证程序的正确性。
《数据结构课程设计方案》指导书
《数据结构课程设计》指导书一、实习目的数据结构课程设计是一项综合性设计活动,要求在教师的指导下,利用本课程内的以及到目前为止所学到的有关知识和技术解决一些不太复杂但却是综合性的问题。
从规模来说,课程设计是在平时作业的基础上进一步扩大的大作业。
在设计中,要求学生要全面考虑相互联系的各个方面及问题。
通过课程设计,使学生对整个课程的知识体系有较深入的理解,在运用本课程的知识解决实际问题方面得到锻炼,对锻炼学生的实践能力以及运用本课程的知识、方法解决更为复杂的实际问题有较好的启发和指导作用,从而为后续课程的学习、毕业设计环节以及将来的实际工作打好坚实的基础。
通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及迄今为止所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。
二、数据结构课程设计要求1.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
3.课程设计按照教案要求需要两周时间完成(2周共十天)。
三、实习基本内容本次课程设计完成如下模块(共23个模块,学生可以在其中至少挑选5-6个功能块完成,其中8、9、10、13在做5个以下不算数但已经做了5个以上算数)1 【校园导游程序】问题描述:用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
基本要求:查询各景点的相关信息;查询图中任意两个景点间的最短路径;查询图中任意两个景点间的所有路径;增加、删除、更新有关景点和道路的信息。
数据结构课程设计指导书(2012)
《数据结构》课程设计指导书一、课程设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
课程设计是加强学生实践能力的一个强有力手段。
本课程设计的目的就是要达到理论与实际应用相结合,使学生深化理解书本知识,获取上机实践经验,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养软件工作者所需的动手能力、独立解决问题的能力。
该课程设计侧重软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,以至一整套软件工作规范的训练和科学作风的培养。
通过该课程设计的操作与实践,使学生真正掌握数据结构相关算法的实现及应用方法,在一定程度上提高使用数据结构相关算法的综合设计能力,具体掌握的基本能力如下:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计要求学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课程设计的要求。
通过设计一个完整的程序,使学生掌握数据结构的应用,算法的编写。
要求如下:1.做好上机准备:要充分认识课程设计对自己的重要性,认真做好设计前的各项准备工作。
每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
2.既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。
3.独立思考,独立完成:课程设计中各项任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
数据结构与数据库课程设计指导书
数据结构与数据库课程设计指导书一、课程设计的目的、要求和任务本课程设计通过设计完整的程序,使学生掌握数据结构的应用、算法的编写等基本方法.掌握数据库应用程序设计的步骤和方法.1.课程的目的〔1〕使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以与它们在程序中的使用方法.〔2〕使学生掌握数据库设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力.〔3〕使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力;2.课程的基本要求与任务〔1〕巩固和加深对数据结构基本知识的理解,提高综合运用所学课程知识的能力.〔2〕培养学生自学参考书籍,查阅手册、图表和文献资料的能力.〔3〕通过实际课程设计,初步掌握简单软件的分析方法和设计方法.〔4〕了解与课程有关的工程技术规范,能正确解释和分析实验结果.〔5〕题目具有足够的工作量.〔6〕有能力的同学可以按照数据库的原理设计数据库表逻辑结构,通过数据结构的方法用C++/Java/C语言编写程序实现表中数据的插入、删除、查找等操作.二、课程设计的一般步骤选题与搜集资料:分析与概要设计:根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构、并在此基础上进行实现程序功能的算法设计.程序设计:运用掌握C++/Java/C语言编写程序,实现程序的各个模块功能.调试与测试:调试程序,并记录测试情况.完成课程设计报告.验收与评分:指导教师对每个同学的开发的系统进行综合验收.三、课程设计报告的规范课程设计报告〔3000字以上,数据结构题目1000字以上,数据库题目2000字以上〕数据结构题目要求规范书写,应当包括如下8个部分:〔1〕问题描述:描述要求编程解决的问题.〔2〕基本要求:给出程序要达到的具体的要求.〔3〕算法思想:描述解决相应问题算法的设计思想.〔4〕模块划分:描述所设计程序的各个模块〔即函数〕功能.〔5〕数据结构:给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以与新定义的抽象数据类型.〔6〕源程序:给出所有源程序清单,要求程序有充分的注释语句,至少要注释每个函数参数的含义和函数返回值的含义.〔7〕测试数据:设计测试数据,或具体给出测试数据.要求测试数据能全面地测试所设计程序的功能.〔8〕测试情况:给出程序的测试情况,并分析运行结果〔9〕总结和体会数据库要求规范书写,应当包括如下6个部分:〔1〕系统概述〔2〕需求分析〔3〕概念结构设计〔4〕逻辑设计〔5〕物理设计〔6〕实现数据库〔7〕总结和体会四、成绩评定标准学生成绩以优、良、中、与格和不与格5个等级评定.〔1〕学生编写的实际软件和运行结果,占总成绩50%;〔2〕设计报告,占总成绩50%.五、数据库题目与要求一、题目按照学号的尾号选择以下系统之一:1、工资管理系统2、药品管理系统3、学生宿舍管理系统4、图书管理系统5、网上销售管理系统6、酒店管理系统7、物业管理系统8、人事管理系统9、学生成绩管理系统10、教室排课管理系统二、要求〔一〕数据库设计1、对系统进行需求分析.2、对系统进行概念结构设计.〔画出局部和全局E_R图〕3、对系统进行逻辑结构设计〔转换成关系模型〕4、对系统进行物理结构设计:〔1〕用T-SQL语句创建数据库〔2〕用T-SQL语句创建所有的表与设置主键〔3〕用T-SQL语句给需要设外键的表设置外键〔4〕用T-SQL语句给表加上check约束、UNIQUE约束、DEFAULT约束5、使用insert语句初始化数据库〔给每个表至少插入5条记录〕六、数据结构课程设计参考题目类型一线性表、栈、队列与递归算法设计1.约瑟夫环[问题描述]约瑟夫〔Joeph〕问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码〔正整数〕.一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数.报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止.试设计一个程序求出出列顺序.[基本要求]利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号.[测试数据]m的初值为20;密码:3,1,7,2,4,8,4〔正确的结果应为6,1,4,7,2,3,5〕.[实现提示]程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码.设n≤30.2、长整数运算[问题描述]设计一个程序实现两个任意长的整数求和运算.[基本要求]利用双项循环链表实现长整数的存储,每个结点含一个整型变量.任何整型变量的范围是-〔215-1〕~〔215-1〕.输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开.[测试数据]〔1〕0;0;应输出"0〞.〔2〕-2345,6789;-7654,3211;应输出"-1,0000,0000〞.〔3〕-9999,9999;1,0000,0000,0000;应输出"9999,0000,0001〞.〔4〕1,0001,000;-1,0001,0001;应输出"0〞.〔5〕1,0001,0001;-1,0001,0000;应输出"1〞.[实现提示]〔1〕每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出.但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便.故可以在每个结点中仅存十进制数的4位,即不超过9999的非负整数,整个链表视为万进制数.〔2〕可以利用头结点数据域的符号代表长整数的符号.用其绝对值表示元素结点数目.相加过程中不要破坏两个操作数链表.两操作数的头指针存于指针数组中是简化程序结构的一种方法.不能给长整数位数规定上限.[选作内容]修改上述程序,使它在整型量范围是-〔2n-1〕~〔2n-1〕的计算机上都能有效地运行.其中,n 是由程序读入的参量.输入数据的分组方法可以另行规定.3、多项式链式存储结构与其代数运算[问题描述]设计并建立一个链式存储分配系统来表示和操作多项式.为了避免对零和非零多项式进行不同的处理,使用带头结点的循环链表.为了充分利用多项式中不再使用的结点,维护一个可用空间表avail,把不再使用的多项式的结点链入其中.当需要一个新结点时,就查看这个单链表avail.如果表非空,那么可以使用它的一个结点.只有当该表为空时,才使用动态存储分配来创建新结点.[基本要求]设计多项式的存储结构,编写并测试下列函数:a> get_node和ret_node,从/向可用空间表申请和插入一个多项式结点.b> pread,读取一个多项式,并将其转换成循环存储表示.返回指向该多项式的头结点的指针.c> pwrite,输出多项式,采用能够清楚显示的形式.d> padd,计算d = a+b.不改变a和b.e> psub,计算d = a-b.不改变a和b.f> pmult,计算d = a*b.不改变a和b.g> eval,计算多项式在某点a的值,其中a是一个浮点型常量.返回结果为浮点数.h> perase,把存储表示为循环链表的多项式返还给可用空间表.[实现提示]为了进一步简化加法算法,把多项式的头结点的指数域设为-1.4、稀疏矩阵的完全链表表示与其运算[问题描述]稀疏矩阵的每个结点包含down,right,row,col和value五个域.用单独一个结点表示一个非零项,并将所有结点连接在一起,形成两个循环链表.使得第一个表即行表,把所有结点按照行序〔同一行内按列序〕用right域起来.使得第二个表即列表,把所有结点按照列序〔同一列内按行序〕用down起来.这两个表共用一个头结点.另外,增加一个包含矩阵维数的结点.稀疏矩阵的这种存储表示称为完全链表表式.实现一个完全链表系统进行稀疏矩阵运算,并分析下列操作函数的计算时间和额外存储空间的开销.〔2〕设计目的认识和掌握稀疏矩阵的完全链表表示;能够建立并运用这种存储结构<3> 基本要求建立一个用户友好、菜单式系统进行下列操作,并使用合当的测试数据测试该系统.读取一个稀疏矩阵建立其完全链表表示输出一个稀疏矩阵的内容删除一个稀疏矩阵两个稀疏矩阵相加两个稀疏矩阵相减两个稀疏矩阵相乘稀疏矩阵的转置〔4〕实现提示链表上的操作.5、实现简单数字图像处理[问题描述]一幅图像就是一个从位置集到颜色集的变换.考虑二维图像,位置集实际上就是一个矩阵,此时一幅图像实际上就是一个内容为颜色矩阵.如果颜色为0-255间的整数,表示该位置的灰度等级,0为黑色,255为白色,此时的图像称为灰度图.而图像的处理就是在该矩阵进行相关计算.一种常见的计算就是通过一点和周围8个点的信息共同决定该点的新值:如一点的新值为该点和周围8点颜色值之和的均值,这一操作可用下图表示.显然这样处理后,图像会变得平滑,因此称为平滑操作.显然将上述操作变为下图时,就成为锐化操作.图像锐化模板要##现若干基本的图像处理操作.[基本要求]①熟悉Windows下BMP文件的格式,能够实现其读写<只考虑灰度图像>.②实现图像的平滑和锐化操作,其它处理操作选做.③需用VC++作为语言.6、回文判断[问题描述]试写一个算法,判断依次读入的一个以为结束符的字母序列,是否为形如‘序列1&序列2’模式的字符序列.其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列.例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是.[实现提示]首先,序列1进栈,然后序列1出栈并与序列2比较.[测试数据]由学生依据软件工程的测试技术自己确定.注意测试边界数据,如序列1和序列2均为空串.7、商品货架管理[问题描述]商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近.上货时,需要倒货架,以保证生产日期较近的商品在较下的位置.[基本要求]针对一种特定商品,实现上述管理过程.[实现提示]用栈模拟货架和周转空间.[测试数据]由学生依据软件工程的测试技术自己确定.注意测试边界数据,如空栈.8、停车场管理[问题描述]设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列〔大门在最南端,最先到达的第一辆车停放在车场的最北端〕,若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用.试为停车场编制按上述要求进行管理的模拟程序.[测试数据]设n=2,输入数据为:〔‘A’,1,5〕,〔‘A’,2,10〕,〔‘D’,1,15〕,〔‘A’,3, 20〕, 〔‘A’,4,25〕,〔‘A’,5,30〕,〔‘D’,2,35〕,〔‘D’,4,40〕,〔‘E’,0,0〕.每一组输入数据包括三个数据项:汽车"到达〞或"离去〞信息、汽车牌照与到达或离去的时刻,其中,‘A’表示到达;‘D’表示离去,‘E’表示输入结束.[基本要求]以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车"到达〞或"离去〞信息、汽车牌照与到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去;则输出汽车在停车场内停留的时间和应交纳的费用〔在便道上停留的时间不收费〕.栈以顺序结构实现,队列以链表实现.[实现提示]需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现.输入数据按到达或离去的时刻有序.栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照和进入停车场的时刻.9、电梯运行仿真程序[问题描述]办公大楼有若干层〔例如,十层〕,每层有电梯,同时有步行楼梯;全楼有若干部〔例如,不多于10部〕电梯同时供使用,电梯容量为24人,速度每上下一层需5秒,在某一层停下至少15秒.其运行状态可分:向上、向下、停止,当前乘客数,当前所在层数.它设有一个"按钮数组〞,例如第五层的按钮按下,意味着有乘客在第5层到达目标层,等等.在楼的每一层,有电梯数,有按钮表示有人等待向上或向下,由若干人在等待,有若干电梯在本层停下,等等.在大楼中〔包括进出〕的总人数不超过500 人,每个人站在电梯前有个目标层,他有一个最大的忍受等待时间,因为他可以选择电梯或是步行走楼梯,等等.还有下面若干假设:在每个时间段要进大楼的人数在0~199 之间随机取值;用电梯的每个人的目标层在1~10 之间取值;一个人在进电梯或改走楼梯之前的等待时间在180~360 秒范围内随机发生;一个人到达目标层后第二次再乘电梯中间的工作时间在400~6600 秒间随机取值.[基本要求]编写一个程序,模拟办公大楼中全部电梯的工作过程.这个仿真程序可以用来监测系统运行情况,改善大楼管理,它也可以看成是一种游戏程序.屏幕显示的布局设计类型二串与其应用1、文学研究助手[问题描述]文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置.试写一个实现这一目标的文字统计系统,称为"文学研究助手〞.[基本要求]英文小说存于一个文本文件中.待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成.程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计.[测试数据]以你的源程序模拟英文小说,程序语言保留字集作为待统计的词汇集.[实现提示]设小说中的词汇一律不跨行.这样,每读入一行,就统计每个词在这行中的出现次数.出现位置所在行的行号可以用链表存储.若某行中出现了不止一次,不必存多个相同的行号.类型三树、图与其应用1、二叉树的建立与遍历[问题描述]建立一棵二叉树,并对其进行遍历〔先序、中序、后序〕,打印输出遍历结果.[基本要求]从键盘接受输入〔先序〕,以二叉链表作为存储结构,建立二叉树〔以先序来建立〕,并采用递归算法对其进行遍历〔先序、中序、后序〕,将遍历结果打印输出.[测试数据]ABCффDEфGффFффф〔其中ф表示空格字符〕则输出结果为:先序:ABCDEGF中序:CBEGDFA后序:CGBFDBA[选作内容]采用非递归算法实现二叉树遍历.2、打印二叉树结构[问题描述]按凹入表形式横向打印二叉树结构,即二叉树的根在屏幕的最左边,二叉树的左子树在屏幕的下边,二叉树的右子树在屏幕的上边.[测试数据]由学生依据软件工程的测试技术自己确定.注意测试边界数据,如空二叉树.3、打印树结构[问题描述]按凹入表形式打印树形结构.[测试数据]由学生依据软件工程的测试技术自己确定.注意测试边界数据,如空树.[实现提示]〔1〕利用树的先根遍历方法;〔2〕利用结点的深度控制横向位置.4、图遍历的演示[问题描述]很多涉与图上操作的算法都是以图的遍历操作为基础的.试写一个程序,演示无向图的遍历操作.[基本要求]以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历.以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集.[测试数据]由学生依据软件工程的测试技术自己确定.注意测试边界数据,如单个结点.[实现提示]设图的结点不超过30个,每个结点用一个编号表示〔如果一个图有n个结点,则它们的编号分别为1,2,…,n〕.通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制.注意,生成树的边是有向边,端点顺序不能颠倒.5、学生选课系统[问题描述]大学里实行学分制.每门课都有一定的学分.每个学生均需要修满规定数量的课程才能毕业.其中有些课程可以直接修读,有些课程需要一定的基础知识,必须在选了其他一些课程的基础上才能修读.例如,《数据结构》必须在选修了《程序设计基础》之后才能选修.我们称《程序设计基础》是《数据结构》的"先修课〞.假定每门课的直接先修课至多只有一门,两门课可能存在相同的先修课.例如:课程号先修课号学分1 01211323403524上例中,1是2的先修课,即如果要选修2,则1必定被选.[基本要求]学生不可能学完大学里开设的所有课程,因此每个学生必须在入学时选定自己要学的课程.每个学生所修的学分数的下限是给定的.现在编写一个"学生选课系统〞,任意给定一种课程体系〔总课程数,课程之间的修读先后制约关系,学生毕业要求修的课程学分数〕,该系统能帮助学生找出一种选课方案,使得他所选课程数目最少,并获得毕业所需学分,并且必须满足先修课程优先的原则.具体功能如下:1.将课程体系存放为课程体系文件CourseHierarchy.txt ;2.将课程体系文件CourseHierarchy.txt 转换左孩子右兄弟二叉树表示;3.在此基础上对二叉树进行先序、中序、后序遍历.4. 给出选课方案.6、设计一个哈夫曼码的编/译码系统[基本要求]该系统应具有以下功能:(1)I:初始化〔Initialization〕.从终端读入字符集大小n,以与n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中.(2)E:编码〔Encoding〕.利用已建好的哈夫曼树〔如不在内存,则从文件hfmTree 中读入〕,对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中.(3)D:译码〔Decoding〕.利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中.(4)P:打印代码文件〔Print〕.将文件CodeFile以紧凑格式显示在终端上,每行50个代码.同时将此字符形式的编码文件写入文件CodePrin中.(5)T:打印哈夫曼树〔Tree printing〕.将已在中的哈夫曼树以直观的方式〔树或凹入表形式〕显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中. [实现提示](1)编码结果以文本方式存储在文件CodeFile中.(2)用户界面可以设计为"菜单〞方式:显示上述功能符号,再加上"Q〞,表示退出运行Quit.请用户键入一个选择功能符.此功能执行完毕后再显示此菜单,直至某次用户选择了"Q〞为止.(3)在程序的一次执行过程中,第一次执行I,D或C命令之后,哈夫曼树已经在内存了,不必再读入.每次执行中不一定执行I命令,因为文件hfmTree可能早已建好. [测试数据]〔1〕利用下面这道题中的数据调试程序.某系统在通信联络中只可能出现八种字符,其概率分别为0.25,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试设计哈夫曼编码.〔2〕用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:"THIS PROGRAM IS MY FA VORITE〞.7、校园导游咨询系统[问题描述]设计一个校园导游程序, 为来访的客人提供信息查询服务.[基本要求]〔1〕设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息,以边表示路径,存放路径长度等相关信息.〔2〕为来访客人提供图中任意景点相关信息的查询;〔3〕为来访客人提供从校门口到图中任意景点的问路查询;8、推销员问题:[问题描述]有一个推销员要到N〔N>0〕个城市去推销产品,他从某个城市出发,经历每个城市,且每个城市只能去一次,然后回到初始城市,以距离作为代价,他希望找出一个最佳路径.这N个城市相互都有道路可通,但距离各不相同,城市个数和各个城市的相通距离可由学生自己设定.[基本要求]〔1〕可以输入城市个数〔不少于10个〕、输入城市信息和城市之间的距离〔为整数〕;〔2〕按照输入出发城市,根据城市的距离最短给出路径选择.〔3〕界面要求:有合理的提示和人机交互.9、全国交通咨询模拟[问题描述]处于不同目的的旅客对交通工具有不同的要求.例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少.编制一个全国城市间的交通咨询程序,为旅客提供最优决策的交通咨询.[基本要求]〔1〕提供对城市信息进行编辑〔如:添加或删除〕的功能;〔2〕城市之间有两种交通工具:火车或飞机,提供对全国城市交通图和列车时刻表与飞机航班表进行编辑的功能.〔信息的输入方式可以是文件输入和键盘输入两种方式〕〔3〕提供两种最优决策:最快到达和最省钱到达.〔选作:旅途中转次数最少的最优决策〕〔4〕旅途中耗费的总时间应该包括中转站的等候时间.〔5〕咨询以用户和计算机的对话方式进行.a〕由用户输入起始站、终点站、最优决策原则和交通工具;b〕输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地.10、关键路径问题[问题描述]设计一个程序求出完成整项工程至少需要多少时间以与整项工程中的关键活动.[基本要求]〔1〕对一个描述工程的AOE网,应判断其是否能够顺利进行.〔2〕若该工程能顺利进行,输出完成整项工程至少需要多少时间,以与每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间.类型四查找和排序1、二叉排序树[问题描述]从键盘读入一组数据,建立二叉排序树并对其进行查找、遍历、格式化打印等有关操作. [基本要求]建立二叉排序树并对其进行查找,包括成功和不成功两种情况,并给出查找长度.[测试数据]由学生依据软件工程的测试技术自己确定.注意测试边界数据.[选作内容]实现二叉排序树的插入、删除操作.2、内部排序算法比较[问题描述]各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间.试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受.[基本要求]〔1〕对以下10种常用的内部排序算法进行比较:直接插入排序;折半折入排序;二路插入排序;希尔排序;起泡排序;快速排序;简单选择排序;堆排序;归并排序;基数排序.〔2〕待排序表的表长不少于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字移动次数〔关键字交换计为3次移动〕.[测试数据]由随机产生器决定.[实现提示]主要工作是设法在程序中适当的地方插入计数操作.程序还可以包括计算几组数据得出。
数据结构课程设计指导书
{count++;
q=p;
p=p->next;ቤተ መጻሕፍቲ ባይዱ
if(p->data==NULL)
{q=p;p=q->next;}
}
printf("%d",p->data);
if(p!=q)
{q->next=p->next;
free(p);
p=q->next;}
else
{
free(p);
/*建立一个无头结点的循环单链表*/
p=malloc(sizeof(LNode));
p->data=1;
p->next=p;
for(i=n;i>1;i--)
{q=malloc(sizeof(LNode));
q->data=i;
q->next=p->next;
p->next=q;
}
/*查找报数的起始结点*/
【基本要求】
(1)设计本校的校园平面图,所含景点不少于6个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。可以拓展。
Alter()的功能:修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
Delete()的功能:删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
List()的功能:显示通讯录中的所有记录。
Save()的功能:保存通讯录中的所有记录到指定文件中。
数据结构课程设计指导书
《数据结构》课程设计指导书一、课程设计教学目的及基本要求1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;5. 独立完成;6. 题材不限,或从参考题目中任选一题;7. 仅限用C语言编写程序;8. 2008年6月30日前完成。
二、课程设计步骤1. 问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?2. 逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;3. 详细设计:定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;4. 程序编码:把详细设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚;5. 程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;6. 结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。
《数据结构》课程设计指导书1教学文稿
《数据结构》课程设计指导书(共13题)一、课程设计的目的课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。
巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。
为今后学习其他计算机课程打下基础。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。
二、课程设计的要求在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过算法的设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的课程设计与程序分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
三、课程设计的学生分组情况每组三至五人,共同研究、共同讨论,可以共同编写算法,但必须各自独立完成各自的程序。
四、课程设计的时间安排课程设计前两周:将各项任务及问题进行讲解、分析。
课程设计一周:星期一:学生对任务进行讨论、研究与分析,初步设计出算法。
星期二到星期四:设计出详细算法,并上机调试程序。
星期五到星期六:写出课程设计报告并考核。
五、课程设计的主要内容【课程设计题目一】一元稀疏多项式加法、乘法器【问题描述】设计一个一元稀疏多项式加法、乘法器用于计算两个多项式的加法和乘法。
例如(x2+4x5+2x9)+(x+3x4)或(7x4+4x6+2x9)*(x4+3x9)【基本要求】(1)输入并建立两个多项式f(x)和g(x);(2)输出每个多项式,要求输出时按指数从小到大输出。
(3)两个多项式完成加法、乘法运算。
(4)输出两个多项式的加法之和及乘积的结果。
(5)写出课程设计报告【实现提示】用带表头结点的单链表存储多项式。
【测试数据】分别选定三组测试数据进行测试,验证程序的正确性。
数据结构课程设计指导书
《数据结构》课程设计指导书一、课程设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
课程设计是加强学生实践能力的一个强有力手段。
本课程设计的目的就是要达到理论与实际应用相结合,使学生深化理解书本知识,获取上机实践经验,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养软件工作者所需的动手能力、独立解决问题的能力。
该课程设计侧重软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,以至一整套软件工作规范的训练和科学作风的培养。
通过该课程设计的操作与实践,使学生真正掌握数据结构相关算法的实现及应用方法,在一定程度上提高使用数据结构相关算法的综合设计能力,具体掌握的基本能力如下:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计要求学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课程设计的要求。
通过设计一个完整的程序,使学生掌握数据结构的应用,算法的编写。
要求如下:1.做好上机准备:要充分认识课程设计对自己的重要性,认真做好设计前的各项准备工作。
每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
2.既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。
3.独立思考,独立完成:课程设计中各项任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程设计指导书(共13题)一、课程设计的目的课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。
巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。
为今后学习其他计算机课程打下基础。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。
二、课程设计的要求在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过算法的设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的课程设计与程序分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
三、课程设计的学生分组情况每组三至五人,共同研究、共同讨论,可以共同编写算法,但必须各自独立完成各自的程序。
四、课程设计的时间安排课程设计前两周:将各项任务及问题进行讲解、分析。
课程设计一周:星期一:学生对任务进行讨论、研究与分析,初步设计出算法。
星期二到星期四:设计出详细算法,并上机调试程序。
星期五到星期六:写出课程设计报告并考核。
五、课程设计的主要内容【课程设计题目一】一元稀疏多项式加法、乘法器【问题描述】设计一个一元稀疏多项式加法、乘法器用于计算两个多项式的加法和乘法。
例如(x2+4x5+2x9)+(x+3x4)或(7x4+4x6+2x9)*(x4+3x9)【基本要求】(1)输入并建立两个多项式f(x)和g(x);(2)输出每个多项式,要求输出时按指数从小到大输出。
(3)两个多项式完成加法、乘法运算。
(4)输出两个多项式的加法之和及乘积的结果。
(5)写出课程设计报告【实现提示】用带表头结点的单链表存储多项式。
【测试数据】分别选定三组测试数据进行测试,验证程序的正确性。
【课程设计题目二】局域网的架设问题【问题描述】若要在8个城市(A、B、C、D、E、F、G、H)之间架设局域网,如何以最低的经济代价架设这个局域网。
【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔(Kruskual和矩阵运算)算法生成局域网的架设方案(2)写出课程设计报告。
分别对每种方法选定一组测试数据进行测试,验证程序的正确性。
【课程设计题目三】二叉树的创建、二叉树的遍历【问题描述】创建一棵二叉树,并对二叉树进行中序、前序、后序和层次遍历,分别写出它们的递归、非递归遍历算法。
【基本要求】创建多种(五种以上)不同形态的二叉树,验证上述算法。
【课程设计题目四】校园导游咨询系统【问题描述】设计一个你所在学校的校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】(1)设计你所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校内各景点,存放景点名称,代号,简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查出任意两个景点之间的一条最短的简单路径。
(4)写出课程设计报告【测试数据】选定一组测试数据进行测试,验证程序的正确性。
【课程设计题目五】通信网络的架设问题若要在n(≥10)个城市之间建设通信网络,只需要架设n-1条线路即可,如何以最低的经济代价建设这个通信网,是一个网的最小生成树问题。
【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔(Kruskual和矩阵运算)生成网中的最小生成树(2)写出课程设计报告。
【测试数据】分别对每种方法选定三组测试数据进行测试,验证程序的正确性。
【课程设计题目六】内部排序的比较【问题描述】比较内部排序——冒泡排序、插入排序、二分插入排序、选择排序的运行时间。
给出算法执行的时间阶或每个程序的运行时间,精确到秒。
【基本要求】(1)比较下列几种内部排序:冒泡排序、插入排序、二分插入排序、选择排序的运行时间。
要求随机生成20000个测试数据进行测试,并输出每个程序的运行时间,精确到秒。
(2)写出课程设计报告【测试数据】选定一批测试数据进行测试,验证程序的正确性并对计算时间进行比较。
【课程设计题目七】算法表达式的求值演算【问题描述】以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。
利用教科书给出的算符优先关系,加上乘方(^)和求除(%)运算符,实现对算术混合运算表达式的求值。
【基本要求】(1)用顺序栈实现(2)含有乘方(^)、加(+)、减(-)、乘(*)、除(/)、求除(%)等运算;并含有括号。
(3)分别以五组不同的表达式作为测试实例,每个实例中含有上述所有运算符,测试其结果的正确性。
(4)写出课程设计报告【测试数据】选定五组测试数据进行测试,验证程序的正确性。
【课程设计题目八】设计一个矩阵运算器【问题描述】设计一个矩阵运算器,对矩阵进行乘方(^)、加(+)、减(-)、乘(*)运算;【基本要求】(1)参见数据结构题集P136页4.1(2)求含有乘方(^)、加(+)、减(-)、乘(*)运算;。
(3)写出课程设计报告【测试数据】分别选定一组测试数据进行测试,验证程序的正确性。
【课程设计题目九】自来水管理架设问题【问题描述】若要在扬州大学的八个居民区(A区、B区、C区、D区、E区、F区、G区、H区)之间架设自来水管道,如何以最低的经济代价架设这个自来水管道。
【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔Kruskual和矩阵运算)算法生成自来水管道的架设方案(2)写出课程设计报告。
【测试数据】分别对每种方法选定三组测试数据进行测试,验证程序的正确性。
【课程设计题目十】校园网架设的方案设计问题【问题描述】若要在扬州大学的八个校区(江阳路南校区、江阳路北校区、盐阜校区、瘦西湖校区、农学院校区、工学院校区、水利学院校区、医学院校区)之间架设校园网,如何以最低的经济代价架设这个校园网。
【基本要求】(1)利用三种方法(Prim算法、克鲁斯卡尔(Kruskual)和矩阵运算)算法生成校园网的架设方案(2)写出课程设计报告。
【测试数据】分别对每种方法选定一组测试数据进行测试,验证程序的正确性。
【课程设计题目十一】学生成绩管理系统【问题描述】现有学生成绩信息文件1(1.txt),内容如下姓名学号语文数学英语张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47…. .. .. .. …学生成绩信息文件2(2.txt),内容如下:姓名学号语文数学英语陈果 31 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58 77…. .. .. .. …【基本要求】试编写一管理系统,要求如下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体和链表实现上述要求.【课程设计题目十二】学生成绩管理系统【问题描述】现有学生成绩信息文件1(1.txt),内容如下姓名学号语文数学英语张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47…. .. .. .. …学生成绩信息文件2(2.txt),内容如下:姓名学号语文数学英语陈果 31 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58 77…. .. .. .. …【基本要求】试编写一管理系统,要求如下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体和数组实现上述要求.【课程设计题目十三】算法表达式的求值演算【问题描述】以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。
利用教科书给出的算符优先关系,加上乘方(^)和求除(%)等运算符,实现对算术混合运算表达式的求值。
【基本要求】(1)用链栈实现(2)含有乘方(^)、加(+)、减(-)、乘(*)、除(/)、求除(%)等运算;并含有括号。
(3)分别以五组不同的表达式作为测试实例,每个实例中含有上述所有运算符,测试其结果的正确性。
(4)写出课程设计报告【测试数据】选定五组测试数据进行测试,验证程序的正确性。
六、课程设计报告的主要内容课程设计报告主要包括以下几方面的内容:(1)课程设计的题目(2)课程设计的目的(3)分析系统的主要功能及用途(4)分析和描述系统的基本要求(5)问题实现的主要算法与分析(6)源程序(7)使用方法与说明(8)课程设计的小结(9)参考文献七、课程设计的考核结合学生的动手能力,独立分析解决问题的能力和创新精神,总结报告和答辩水平以及学习态度综合考评。
考核成绩分优、良、中、及格和不及格五等。
考核主要包含以下几方面内容:1)运行所设计的系统2)回答相关题目的问题3)提交课程设计报告4)提交软盘(含源程序、执行程序和课程设计报告)5)内容要有创新。
八、附录(课程设计报告示例)数据结构课程设计报告课题名称最小生成树问题姓名×××学院广陵学院系科班级计科81101 指导老师陈宏建日期2013年1月12日目录●一、问题描述 (2)●二、概要设计 (2)⏹1抽象数据类型定义 (2)⏹2程序包含模块 (2)⏹3函数调用关系 (3)●三、详细设计 (3)⏹1顶点、边、图和集合类型 (3)⏹2图的基本操作 (4)⏹3程序详细代码 (5)⏹4函数调用关系图 (15)●四、设计和调试分析 (15)●五、用户手册 (16)●六、测试结果 (18)●七、附件 (19)●八、心得体会 (20)最小生成树问题一、问题描述1、要在n个城市之间建设通信网络,只需要架设n-1条线路即可。
如何以最低的经济代价建设这个通信网络,是一个网的最小生成树问题。
2、利用克鲁斯卡尔算法求网的最小生成树。
假设连通网N=(V,{E}),则令最小生成树的的初始状态为只有n个结点而无边的非连通图T=(V,{}),图中每一个顶点自成一个连通分量。