数据结构课程设计指导书

合集下载

计科《数据结构》课程设计指导书

计科《数据结构》课程设计指导书

景德镇陶瓷学院科技艺术学院《数据结构》课程设计指导书指导老师:何福保、胡开华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++言编程并调试<程序设计),以提高学生的程序设计及解决实际问题的能力;并为后续课程学习打下基础。

本次课程设计所列问题,大都与现实生活密切相关,并且其包含了《数据结构》课程中所讲述的基本类型,具有典型意义。

要求学生利用《数据结构》课程有关理论,参考本手册所介绍的软件工程的的相关方法,对不同问题分别进行需求分析,概要设计,然后进行详细设计和代码的编写,并进行测试得出相应软件,最后编写软件说明及课程设计论文。

由于只有二周共十天的时间,为使学生能尽快抓住问题的本质,每个题目不但给出了问题描述,要求,还给出实现提示,以便学生能尽快完成课程设计任务。

第二节、课程设计要求学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。

《数据结构》课程设计指导书

《数据结构》课程设计指导书

《数据结构》课程设计指导书一、课程教学目标用所学的数据结构有关理论知识,结合实际问题设计相关算法及程序达到理论与实践相结合的目的(该课程设计为必修课,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表示栈满。

当栈满时再做进栈运算必定产生空间溢出,简称“上溢”;当栈空时再做退栈运算也将产生溢出,简称“下溢”。

数据结构课程设计指导书

数据结构课程设计指导书

数据结构课程设计指导书一、设计方法本次设计提供一次实际环境,使学生对数据结构有进一步的了解。

设计环境和开发工具操作系统:windows2000 (或更高版本)。

开发工具:Turboc二、设计任务1、链表操作①设计目的(1)掌握线性链表的建立.(2)掌握线性链表的基本操作.②设计内容和要求(1)利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。

(2)实现两个链表的合并a)建立两个链表A和B,链表元素个数分别为m和n个.b)假设元素分别为(x1,x2,…x m),和(y1,y2,…y n)。

把它们合并成一个线形表C,使得:当m>=n时,C=x1,y1,x2,y2,…x n,y n,…,x m当n〉m时,C=y1,x1,y2,x2,…y m,x m,…,y n输出线形表Cc)用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。

2、joseph环①设计目的检验对链表结构及算法的掌握程度。

②设计内容和要求编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。

一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。

报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止.设计一个程序来求出出列顺序.要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号.测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?要求:输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表.输出形式:建立一个输出函数,将正确的输出序列3 、排序算法比较①设计目的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.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。

3.课程设计按照教案要求需要两周时间完成(2周共十天)。

三、实习基本内容本次课程设计完成如下模块(共23个模块,学生可以在其中至少挑选5-6个功能块完成,其中8、9、10、13在做5个以下不算数但已经做了5个以上算数)1 【校园导游程序】问题描述:用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。

要求能够回答有关景点介绍、游览路径等问题。

基本要求:查询各景点的相关信息;查询图中任意两个景点间的最短路径;查询图中任意两个景点间的所有路径;增加、删除、更新有关景点和道路的信息。

数据结构课程设计指导书(2012)

数据结构课程设计指导书(2012)

《数据结构》课程设计指导书一、课程设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

课程设计是加强学生实践能力的一个强有力手段。

本课程设计的目的就是要达到理论与实际应用相结合,使学生深化理解书本知识,获取上机实践经验,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养软件工作者所需的动手能力、独立解决问题的能力。

该课程设计侧重软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,以至一整套软件工作规范的训练和科学作风的培养。

通过该课程设计的操作与实践,使学生真正掌握数据结构相关算法的实现及应用方法,在一定程度上提高使用数据结构相关算法的综合设计能力,具体掌握的基本能力如下:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、课程设计要求学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课程设计的要求。

通过设计一个完整的程序,使学生掌握数据结构的应用,算法的编写。

要求如下:1.做好上机准备:要充分认识课程设计对自己的重要性,认真做好设计前的各项准备工作。

每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。

2.既要虚心接受老师的指导,又要充分发挥主观能动性。

结合课题,独立思考,努力钻研,勤于实践,勇于创新。

充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。

3.独立思考,独立完成:课程设计中各项任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。

数据结构课程设计指导书2010-2011

数据结构课程设计指导书2010-2011

计算机科学与技术专业数据结构课程设计指导书数据结构课程教学组2009.8.2【课程设计目的】“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。

在我国,”数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一。

世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻地掌握的重要基础。

学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。

课程设计是加强学生实践能力的一个强有力手段。

课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。

课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。

严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。

【课程设计要求】学生必须仔细阅读《数据结构》课程设计任务书与本指导书,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向教师汇报。

课程设计按照教学要求需要两周时间完成,由于安排的课内机时有限而且数据结构课程本身没有课内上机学时, 为保证完成课程设计任务,每位同学必须做好充分准备。

数据结构课程是多门重要专业课的先行课程,难度较大,需要较好的程序设计和调试能力。

如果学生能够按照要求,从时间和精力上保证完全的投入,相信能够有很大的收获。

具体要求如下:1.诚实代码要求:每个学生要独立完成设计任务,严禁抄袭现象。

(完整版)《数据结构课程设计》指导书

(完整版)《数据结构课程设计》指导书

《数据结构课程设计》指导书一、实习目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及迄今为止所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。

二、数据结构课程设计要求通过这次设计,要求在数据结构析逻辑特性和物理表示,数据结构的选择的应用、算法的设计及其实现等方面中深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

学生必须仔细阅读《数据结构》课程设计指导书,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报.课程设计按照教学要求需要一周时间完成(1周共五天).三、实习基本内容本次课程设计完成如下模块(共5个模块,学生可以在其中至少挑选3—4个功能块完成)1.校园导游程序2.员工管理系统或者订票系统3。

哈夫曼编/译码器或者拓扑排序4。

八皇后问或者迷宫问题求解5.停车场管理或者修道士野人问题若学生对课题表以外的相关课题较感兴趣,希望选作课程设计的课题时,应征得指导教师的认可,并写出明确的设计要求和说明.四、上交相关内容要求上交成果的内容必须由以下四个部分组成,缺一不可1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2.上交程序的说明文件:(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;3.课程设计报告:按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:需求分析:(2)在该部分中叙述,每个模块的功能要求(3)概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义.(4)详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现).源程序要按照写程序的规则来编写。

数据结构与数据库课程设计指导书

数据结构与数据库课程设计指导书

数据结构与数据库课程设计指导书一、课程设计的目的、要求和任务本课程设计通过设计完整的程序,使学生掌握数据结构的应用、算法的编写等基本方法.掌握数据库应用程序设计的步骤和方法.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次移动〕.[测试数据]由随机产生器决定.[实现提示]主要工作是设法在程序中适当的地方插入计数操作.程序还可以包括计算几组数据得出。

《数据结构》课程设计指导书

《数据结构》课程设计指导书

《数据结构》课程设计指导书一、课程设计的目的课程设计的目的是培养学生综合程序设计的能力,训练学生灵活应用所学数据结构知识,独立完成问题分析、总体设计、详细设计和编程实现等软件开发全过程的综合实践能力。

巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的学习作风。

为今后学习其他计算机课程打下基础。

课程设计为学生提供了一个既动手又动脑,独立实践的机会,将书本上的理论知识和工作、生产实际有机地结合起来,从而锻炼学生分析问题、解决实际问题的能力,提高学生的编程序能力和创新意识。

二、课程设计的要求在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过算法的设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的课程设计与程序分析报告。

前期准备工作完备与否直接影响到后序上机调试工作的效率。

三、课程设计的学生分组情况每组两至三人,共同研究、共同讨论,可以共同编写算法,但必须各自独立完成各自的程序。

四、课程设计的任务时间安排课程设计教学安排共16课时,四次上机,每次4课时。

课程设计任务安排如下:1)课程设计前:将各项任务及问题进行讲解、分析。

学生对任务进行讨论、研究与分析,初步设计出算法。

2)设计出详细算法,并上机调试程序。

3)写出课程设计报告并在课程结束后及时提交课程设计报告电子版。

附录数据结构课程设计题目1.产品进销存管理系统(限1 人完成)问题描述:针对某一种行业的库房的产品进销存情况进行管理。

基本要求:1.采用一定的存储结构对库房的货品及其数量进行分类管理;2.可以进行产品类的添加、产品的添加、产品数量的添加;3.能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;2.飞机订票系统(限1 人完成)任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

数据结构课程设计指导书

数据结构课程设计指导书
while(count!=d)
{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教学文稿

《数据结构》课程设计指导书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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计指导一、课程设计要求课程设计是数据结构课程的一个综合实践练习,是有别于课程实验的一个独立实践教学环节。

课程设计一般在课程结束后进行,教学时数为1周。

具体要求如下:1、结合实际问题进一步理解和深化课程理论知识,做到理论与实际相结合。

2、能对实际问题进行分析和抽象,并进行数据结构设计和算法设计,具有初步的分析问题和解决问题的能力。

3、了解软件工程的理论与方法,初步掌握软件开发过程中的需求分析、系统设计、编码、测试等基本方法和技能。

4、进一步强化编程训练,提高程序设计能力。

5、设计内容要有一定的深度和难度,达到一定工作量,代码量不低于500行。

二、课程设计内容课程设计的主要工作如下:1、问题定义与需求分析:根据设计题目的要求,对问题进行分析,确定系统的功能需求和性能需求。

2、数据结构与算法设计:对问题描述中涉及的数据对象定义相应的数据结构,包括逻辑结构、存储定义和主要操作。

对主要算法要进行时间和空间复杂度分析。

3、概要设计:采用面向对象方法设计软件结构,定义类及类之间的关系。

要求系统结构合理、易于实现。

4、详细设计:对数据结构和基本操作做进一步的求精,写出数据存储定义,用程序流程图或伪码对算法进行描述。

5、编码与测试:用C++编程实现系统,并设计测试用例对系统进行测试,修改程序中的错误,形成格式和风格良好的源程序清单。

6、设计结果分析:对系统应用效果进行分析,评价系统的先进性、实际应用价值及在在的问题。

7、撰写课程设计报告。

三、课程设计考核课程设计考核内容包括设计作品和设计报告两个部分。

设计作品包括可运行的源程序(刻录成光盘),系统使用说明,主要程序代码(打印附在课程报告内)。

课程设计报告主要报告系统分析、设计和实现过程,内容如下:1、问题定义及设计要求;2、主要设计内容:详细报告课程设计中所做的主要工作,包括系统分析、概要设计、数据结构设计、算法设计及模块设计和编程及测试等。

3、总结与体会:写出本次课程设计的主要创新点及存在的问题。

4、参考文献:列出所参考的主要文献。

5、小组成员及分工。

课程设计成绩分两部分,设计报告占50%,设计作品占50%。

评价因素主要有:1、知识点覆盖范围及运用能力;2、数据结构设计与算法设计能力;3、系统规模(代码行数);4、数据存储方式;5、人机交互(用户体验或评价)四、时间安排:冬季短学期,第19周周一开题,第19周周四中期检查,下学期开学第一天课程设计答辩。

19周安排课程组老师在指定地点值班辅导。

五、课程设计参考题目1、学生成绩管理系统(***)【问题描述】设计并实现一个能够对学生信息以及其成绩信息进行管理的系统。

其中学生信息包括:学号、姓名、年龄、性别;课程成绩信息包括:课程号、课程名、成绩、任课教师。

能够根据学生信息和成绩信息对数据进行插入、删除、更新、查询、排序、统计等操作。

【基本要求】(1)对系统用到的数据要从能够文件中读取;(2)系统中的排序操作至少要用到快速排序、堆排序和归并排序中的两种排序方法;(3)系统中查找过程至少用到两种查找方法。

【知识点】(1)线性表;(2)排序算法;(3)查找算法。

2、图书管理系统(****)【问题描述】图书管理基本业务活动包括:对一本书进行采编入库、清除库存、借阅和归还等。

试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。

【基本要求】(1)每种书的登记内容至少包括书号、书名、作者、现存量和总库存量等5种。

(2)系统应实现的操作及功能定义如下:1)采编入库:新购入一种书,经分类和确定书号后登记到图书账目中去。

如果这种书在账目中已有,则只将总库存量增加;2)清除库存:某种书已无保留价值,将它从图书帐目中注销;3)某种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限;4)归还:注销对借阅者的登记,改变该书的现存量。

(3)扩展内容:用B树对书号进行索引,以获得高的查找效率。

【知识点】(1)线性表;(2)查找算法;(3)B树。

3哈夫曼编码译码(****)【问题描述】设计一种编码,让使用频率高的字符的编码尽可能的短,并且要求一字符的编码不能与另一个字符的编码的前一部分相同。

把每个叶子的使用频率作为权,构造哈夫曼树。

然后能够通过字符和他的权值来构造哈夫曼编码,并且能够通过编码相反的过程来实现哈夫曼的译码功能。

【基本要求】(1)能够通过键盘或者纯文本文件读入字符集的大小n,以及n个字符和权值来建立哈夫曼树,并且把建立好的哈夫曼树存入到HuffmanTree.txt中去。

(2)利用已经建立好的哈夫曼树,对文件中的正文进行编码,将结果存入到文件HuffmanCode.txt中。

(3)利用已经建立好的哈夫曼树将HuffmanCode.txt中的哈夫曼编码进行译码,结果存入到HuffmanText.txt中。

(4)能够按照垂直输出二叉树的方式,将存储在HuffmanTree.txt纯文本文件中的哈夫曼树垂直输出。

并且在打印哈夫曼编码是,要求字符与编码之间是一一对应的。

【实现提示】(1)在程序运行时,能够出现一个主选择菜单,用户能够自主选择功能:①建立哈夫曼树;②对哈夫曼树进行编码、译码等功能。

(2)在建立哈夫曼树时,用到文本文件的读取时,需要用到头文件“fstream”来对文本文件进行处理。

【关键技术与知识点】(1)优先级队列;(2)哈夫曼树;(3)啥夫曼编码。

4八皇后问题(***)【问题描述】八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。

问题描述如下:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

【基本要求】(1)在8×8格的国际象棋上摆放八个皇后。

(2)任意两个皇后不能处于同一列中。

(3)任意两个皇后不能处于同一行中。

(4)任意两个皇后不能处于对角线中。

(5)程序中包含递归和非递归两种算法。

【实现提示】最深层的叶子结点才有可能是合法的布局。

深度优先遍历这棵“状态树”,寻找这些叶子便是求解过程。

(1)用三个一维数组A、B、C记录棋盘占用情况,称为状态数组,状态数组的初始值为0,表示棋盘上还没有皇后。

如果一个皇后占据了某一位置(x0,y0)令A[x0]=B[x0+y0]=C[x0-y0]=1,那么下一个皇后能够占据另一个位置(x1,y1)的前提是A[x1]=B[x1+y1]=C[x1-y1]=0.(2)作为数组下标,x和y的取值范围是0~7,因此x+y和x-y的取值范围分别为0~14和-7~7,整个取值范围是-7~14。

按照习惯,数组下标从0开始,这就需要加7,使下标范围等价的转换为0~21,数组A、B、C的长度为22.原来的数组元素A[x]、B[x+y]、C[x-y]现在分别等价于A[x+7]、B[x+y+7]、C[x-y-7]。

(3)利用长度为8的一维数组Y记录皇后的位置,如果Y[y]=x(0<=y<8)表示皇后占据了第y行第x列。

(4)求解过程就是深度优先遍历。

如果叶子是合法的布局,就输出记录的结果。

然后回溯,在回到上一层递归之前,要把状态数组在当前位置上的值恢复为0。

【知识点】(1)树的遍历;(2)递归与非递归算法;(3)栈与队列。

5迷宫求解(***)【问题描述】以一个m*n的长方阵表示迷宫,如图1所示,阴影部分表示此路不能,空白部分表示此路可行。

规定每次只能走上下左右相邻的一格。

设计一个C++程序,求出从入口到出口所有路径。

图1迷宫【基本要求】(1)迷宫的规格(即行数与列数)、状态设置(即各方格能否通行的状态)、入口和出口的位置,均应由输入随机确定。

(2)求得的路径,应该以从入口到出口的路径上的各个方格的坐标的线性序列输出。

当无通路时,应该报告无路径的信息。

(3)扩展内容:求出从入口到出口的最短路径。

【实现提示】(1)将迷宫转换为图,即把迷宫中的空白看作图的顶点,空白的上下左右邻接关系看作图的无向边。

图的顶点存储迷宫空白坐标。

这样图1所示的迷宫可以转换成图2所示的图。

迷宫求解问题可以转换为图的遍历问题。

图2 迷宫问题转换为图(2)存储结构:迷宫可以采用二维数组maze[][]表示。

row与col分别表示迷宫的行数与列数。

而maze[i][j]表示迷宫中第i行第j列的一个方格,用maze[i][j]=0表示该方格可以通行,用maze[i][j]=1表示该方格不可以通行。

可在迷宫的四周加一圈障碍,这样可以保证从任一顶点出发,都可以有4个方向的选择。

(3)可以采用递归算法或非递归算法求出所有路径。

非递归算法需要借助栈保存迷宫搜索程中已走过的路径信息,以便在遇到障碍时沿原路返回,在搜索结束后输出栈中保存的最终路径。

(4)求迷宫最短路径可以采用图的广度优先搜索遍历算法,这时需要采用队列作为辅助数据结构。

【知识点】(1)图的遍历;(2)单源最短路径;(3)递归与非递归算法;(4)栈与队列。

6各种排序算法的性能分析(****)【问题描述】排序是一个将记录的无序序列调整成为一个有序序列的过程。

排序算法是计算机程序设计中的重要过程,不同的排序算法性能各有不同。

在程序中,我们通过随机函数产生规模不同的随机整型数组,然后分别让不同的排序算法来从小到大进行排序。

通过排序时间和排序的交换次数上对不同的排序算法进行性能分析。

【基本要求】(1)每种排序算法在同一规模的数组测试中使用的原始数据是相同的。

例如:不同排序算法对一个含有100个元素的无序数组进行排序时,他们的无序序列是相同的。

(2)对用于测试的随机数组规模不少于100个元素,其待测排序数组不少于5组。

(3)对不同的排序算法要求记录排序所需执行时间和移动次数。

(4)对以下排序算法进行性能分析,尽量采用结构化程序设计方法,要求对各个模块的功能及参数作必要的说明。

(直接插入排序,折半插入排序,希尔排序,起泡排序,快速排序,直接选择排序,堆排序(加黑的着重要求),树型选择排序,归并排序以及基数排序) 【实现提示】(1)通过在程序中插入计数器来实现排序算法中对移动次数的记录。

(2)调用#include<ctime>中的clock函数获取程序的开始时间和结束时间,相减得到程序的运行时间。

【知识点】(1)排序算法。

(2)算法性能分析。

7交通咨询系统(最短路径问题)(*****)【问题描述】设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一个城市顶点之间的最短路径或最低费用或最少时间等问题。

对于不同咨询要求,可以输入城市间的路程或所需要时间或所需费用。

设计分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题。

【基本要求】(1)对城市信息(城市名、城市间的里程)进行编辑:具备添加、修改、删除功能;(2)对飞机航班和列车时刻表进行编辑:里程、航班和列车班次的添加、修改、删除;(3)提供两种最优决策:最快到达或最省钱到达。

相关文档
最新文档