《数据结构与算法设计》课程设计安排表10211117-19
数据结构与算法课程设计教学任务书
《数据结构与算法》课程设计教学任务书一、课程设计的目的数据结构与算法课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构与算法是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。
通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
通过此次课程设计主要达到以下目的:了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求1. 独立思考,独立完成:课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝。
2. 做好上机准备:每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。
3. 按照课程设计的具体要求建立功能模块,要求按照如下几个内容认真完成:1)需求分析:在该部分中叙述,所选课题的功能要求。
2)概要设计:在此说明所选课题的功能模块,以及每个功能模块的算法设计(可以是描述算法的功能模块图),所选课题的的数据结构以及其存储结构设计说明等。
(如果指定存储结构请写出该存储结构的定义)3)详细设计:针对2)中的主要功能模块,画出流程图,给出主要功能模块的流程图、算法及必要的文字说明)4)编码实现:给出3)中主要功能模块的函数实现,重点是函数的声明,变量或参数的说明,以及程序的功能说明与注释,不必把所有代码都写上,主要写出其声明与注释等。
数据结构与算法课程设计
数据结构与算法课程设计一、课程目标知识目标:1. 理解并掌握常见的数据结构(如线性表、树、图等)的基本概念和应用场景;2. 学习并掌握基本算法设计与分析技巧,包括排序、查找、递归等;3. 了解不同数据结构和算法在实际问题中的应用和性能分析。
技能目标:1. 能够运用所学数据结构设计简单的程序,解决实际问题;2. 能够运用算法分析技巧,评价算法的性能,并进行优化;3. 培养学生的编程能力、逻辑思维能力和问题解决能力。
情感态度价值观目标:1. 激发学生对数据结构与算法的兴趣,培养其主动探究和钻研的精神;2. 培养学生的团队合作意识,使其学会在团队中协作解决问题;3. 培养学生严谨、踏实的学术态度,认识到数据结构与算法在计算机科学中的重要性。
课程性质:本课程为高中信息技术课程,旨在帮助学生掌握数据结构与算法的基本知识,提高编程能力和问题解决能力。
学生特点:高中学生已具备一定的编程基础和逻辑思维能力,对新鲜事物充满好奇心,但需加强对数据结构与算法的实践操作和深入理解。
教学要求:结合学生特点,注重理论与实践相结合,通过案例教学和任务驱动,让学生在实际操作中掌握数据结构与算法的知识,提高其编程能力和问题解决能力。
同时,关注学生的情感态度价值观培养,使其形成良好的学习习惯和团队合作意识。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 数据结构部分:- 线性表:定义、顺序存储、链式存储;- 栈和队列:基本概念、应用场景、实现方法;- 树:二叉树、遍历方法、线索二叉树;- 图:图的表示方法、遍历算法、最小生成树、最短路径。
2. 算法部分:- 排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序;- 查找算法:顺序查找、二分查找、哈希查找;- 递归算法:递归概念、应用实例、递归与栈的关系;- 算法分析:时间复杂度、空间复杂度、算法优化。
3. 教学大纲:- 第一周:数据结构概述,线性表的概念及存储;- 第二周:栈和队列,树的基本概念;- 第三周:二叉树及遍历方法,线索二叉树;- 第四周:图的表示和遍历,最小生成树和最短路径;- 第五周:排序算法,查找算法;- 第六周:递归算法,算法分析。
数据结构与算法设计课程设计安排
班数据结构与算法设计课程设计安排一、课程设计题目:1. 宿舍管理查询软件2、一元多项式计算3、学生成绩管理4、文章编辑5、Joseph环6、赫夫曼树7、校园导航8、实现链表的创建、插入、删除和修改9、学生选课管理系统二、课程设计目的:本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。
(注意:课程设计是一门单独的课程,有一个学分,希望同学们引起高度重视,每个程序都要求用循环菜单实现人机交互操作)三、课程设计要求:1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常用算法中的应用。
5. 独立完成;6.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其他的题目,当然在完成自己的题目之后根据个人兴趣可以继续选做其他的题目;7.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;8.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)四、课程设计内容及思想指导:1、宿舍管理查询软件(限1 人完成)1) 任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2) 查询菜单: (用二分查找实现以下操作)A. 按姓名查询B. 按学号查询C. 按房号查询3) 打印任一查询结果(可以连续操作)2、一元多项式计算任务:能够按照指数降序排列建立并输出多项式;能够完成两个多项式的输入、相加、相减,并将结果输出;在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。
《数据结构与算法》课程设计格式要求
《数据结构与算法》课程设计(2010/2011学年第二学期第20周)指导教师:孙麒郭奕亿班级:09计算机科学与技术1班学号:E09620118姓名:倪建鹤《数据结构与算法》课程设计任务书《数据结构与算法》是计算机专业重要的核心课程之一,在计算机专业的学习过程中占有非常重要的地位。
《数据结构与算法课程设计》就是要运用本课程以及到目前为止的有关课程中的知识和技术来解决实际问题。
特别是面临非数值计算类型的应用问题时,需要选择适当的数据结构,设计出满足一定时间和空间限制的有效算法。
本课程设计要求同学独立完成一个较为完整的应用需求分析。
并在设计和编写具有一定规模程序的过程中,深化对《数据结构与算法》课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使自己的程序设计与调试水平有一个明显的提高。
赫夫曼编码/译码器1. 问题描述利用赫夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
这要求在发送端通过一个编码系统对待传输数据预先编码,在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站编写一个赫夫曼码的编/译码系统。
2.基本要求一个完整的系统应具有以下功能:(1) I:初始化(Initialization)。
从终端读入字符集大小n,以及n个字符和n个权值,建立赫夫曼树,并将它存于文件hfmTree中。
(2) E:编码(Encoding)。
利用已建好的赫夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。
(3) D:译码(Decoding)。
利用已建好的赫夫曼树将文件CodeFile中的代码进行译码,结果存入文件Textfile中。
以下为选做:(4) P:印代码文件(Print)。
将文件CodeFile以紧凑格式显示在终端上,每行50个代码。
数据结构与算法课程设计
数据结构与算法 课程设计一、课程目标知识目标:1. 理解数据结构的基本概念,掌握常用的数据结构,如线性表、栈、队列、树和图等;2. 掌握基本的算法设计与分析技巧,包括排序、查找、递归和贪心算法等;3. 学会运用数据结构与算法解决实际问题,培养问题求解能力。
技能目标:1. 能够运用所学数据结构,构建合适的数据模型,提高数据处理和分析能力;2. 能够编写清晰、高效的算法代码,具备一定的编程实践能力;3. 能够运用算法分析工具,对算法性能进行评估,提高算法优化能力。
情感态度价值观目标:1. 培养学生对数据结构与算法的兴趣,激发学习热情,形成积极向上的学习态度;2. 培养学生的团队协作意识,提高沟通与协作能力,学会共同解决问题;3. 培养学生的创新意识,鼓励学生敢于尝试、勇于探索,形成独立思考的习惯。
课程性质分析:本课程为计算机科学与技术相关专业的核心课程,旨在培养学生掌握数据结构与算法的基本知识,提高编程实践能力和问题求解能力。
学生特点分析:学生为高中二年级学生,具有一定的编程基础和逻辑思维能力,对数据结构与算法有一定了解,但实践经验不足。
教学要求:1. 注重理论与实践相结合,提高学生的动手实践能力;2. 采用案例教学,引导学生学会运用所学知识解决实际问题;3. 关注学生个体差异,因材施教,提高学生的综合素质。
二、教学内容1. 数据结构基本概念:介绍数据结构的基本概念、作用和分类,结合课本第一章内容,让学生了解各类数据结构的特点和应用场景。
2. 线性表:讲解线性表的定义、特点及实现方法,结合课本第二章,学习数组、链表等线性表结构及其操作。
3. 栈与队列:学习栈、队列的基本概念、操作及应用,参照课本第三章,掌握栈、队列的实现方法及其应用场景。
4. 树与二叉树:介绍树、二叉树的基本概念、性质及遍历方法,结合课本第四章,学习二叉树、线索二叉树、堆等树结构及其应用。
5. 图:学习图的表示方法、遍历算法及最短路径算法,参考课本第五章,掌握图的相关概念及算法。
数据结构与算法课程设计范本
数据结构与算法课程设计数据结构与算法课程设计一、课程设计的目的、要求和任务本课程设计是为了配合《数据结构与算法》课程的开设,经过设计完整的程序,使学生掌握数据结构的应用、算法的编写等基本方法。
1.课程的目的(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
(2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
(3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力;2.课程的基本要求与任务(1)巩固和加深对数据结构基本知识的理解,提高综合运用课程知识的能力。
(2)培养学生自学参考书籍,查阅手册、图表和文献资料的能力。
(3)经过实际课程设计,初步掌握简单软件的分析方法和设计方法。
(4)了解与课程有关的工程技术规范,能正确解释和分析实验结果。
(5)题目具有足够的工作量。
二、课程设计的一般步骤(1)划分课程设计小组:由不超过3名同学组成一个课程设计小组,自愿组队。
(2)选题与搜集资料:每个课程设计小组在参考选题中选择课题,并保证每人一题。
(3)分析与概要设计:根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构、并在此基础上进行实现程序功能的算法设计。
(3)程序设计:运用掌握C/C++语言编写程序,实现所有程序的各个模块功能。
(4)调试与测试:调试程序,并记录测试情况。
(5)完成课程设计报告。
(6)验收与评分:指导教师对每个同学的开发的系统进行综合验收。
三、任务完成形式1.完整的软件系统最终必须向指导老师提交完整的程序源代码(.c和.cpp以及.h为后缀的文件)、数据文件以及使用说明文件等。
源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的“真实”数据(如对于记录文件,需要有5条以上记录);使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。
数据结构与算法课程设计任务书
数据结构与算法课程设计任务书一、课程设计目的数据结构与算法课程设计是一门重要的实践教学环节,其目的在于加深学生对数据结构和算法基本概念的理解,培养学生运用所学知识解决实际问题的能力,提高学生的编程技能和创新思维。
通过课程设计,学生将能够更加熟练地掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、查找、递归、贪心、动态规划等),并将其应用到实际的程序设计中。
二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。
2、课程设计的题目应具有一定的综合性和挑战性,能够涵盖所学的数据结构和算法知识。
3、学生在设计过程中应注重程序的正确性、可读性和可维护性,合理选择数据结构和算法,优化程序性能。
4、学生需按照规定的格式撰写课程设计报告,报告内容应包括问题描述、算法设计、程序实现、测试结果及分析等。
三、课程设计题目题目 1:学生成绩管理系统设计一个学生成绩管理系统,能够实现以下功能:1、录入学生的基本信息(学号、姓名、课程名称、成绩)。
2、按照学号、课程名称等关键字进行查找和排序。
3、计算每个学生的平均成绩,并按照平均成绩进行排序。
4、统计每门课程的不及格人数和优秀人数(85 分及以上为优秀)。
题目 2:公交线路查询系统设计一个公交线路查询系统,能够实现以下功能:1、录入公交线路的起点、终点、途经站点等信息。
2、根据用户输入的起点和终点,查询可行的公交线路。
3、考虑换乘情况,给出最优的公交线路方案(换乘次数最少、行程时间最短等)。
题目 3:文本文件处理系统设计一个文本文件处理系统,能够实现以下功能:1、读取文本文件,并将文件中的内容存储到合适的数据结构中。
2、统计文件中单词的出现频率,并按照频率降序排列。
3、查找指定的单词或字符串在文件中的位置。
4、对文件内容进行加密和解密操作。
题目 4:迷宫求解系统设计一个迷宫求解系统,能够实现以下功能:1、生成一个随机的迷宫。
2、采用深度优先搜索或广度优先搜索算法求解迷宫的路径。
数据结构与算法课程设计计划书
魏晓鸣、焉德军、王玲芬、宋海玉、赵丹丹、赵晶莹、王存睿、孙世昶、孙晓
网络工程
李锡祚、刘向东、卢桂艳、姜楠、王波
教学起止周:第1至3教学周
一、教学目的与要求:
数据结构与算法课程设计的目的是使同学们能够根据数据对象的特性,合理的组织数据并能综合运用数据结构与算法基本知识和程序设计基本知识解决实际问题,培养基本的、良好的程序设计技能。
周三
周四
周五
第一周
上午
上午、下午
下午
上午
第二周
上午
上午、下午
下午
上午
第三周
上午
上午、下午
下午
上午
三、课程设计题目及具体要求:
1.成绩管理
问题描述:给出n个学生的考试成绩表,成绩表包括学生的学号、姓名、考试成绩(高等数
学、英语、物理),设计一个简单的成绩管理程序。
基本要求:
(1)建立成绩表,能够插入、删除、修改学生的成绩记录;
基本要求:输入表示小区间关系的图及每条管道的权值,选择出n-1条管道,使总投资最小。图的信息输入一次后,保存到文件中,选择的n-1条管道输出到显示器的同时,也保存于文件中。
测试用例:任意选择一个图,模拟小区间可能铺设的管道及费用。
提高要求:显示原始图及选择n-1条管道后的图。
7.安排教学计划(**)
测试数据:取某个单位电话号码簿中的30个记录。
提高要求:将电话号码薄以文件形式保存到盘上,能够按用户名和电话号码两种形式建立哈希表并实现插入、查找、删除表中元素的功能。
注意事项:不能用类库中的类完成题目
6.管道铺设施工的最佳方案(*)
问题描述:需要在某个城市的n个小区铺设管道,则在这n个小区之间铺设n-1条管道即可,假设任意两个居民区之间都可以架设管道,但由于地理环境的不同,所需经费不同,选择最优的施工方案使总投资尽可能的少。
数据结构与算法课程设计计划数学与计算机系信计本科
-数据结构与算法课程设计计划数学与计算机系信计本科————————————————————————————————作者: ————————————————————————————————日期:ﻩ《数据结构与算法》课程设计计划一、设计目的数据结构与算法课程设计是《数据结构与算法》课程教学必不可缺的一个重要环节,它可加深学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。
通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视。
二、课程设计任务7-8人为一个课题组,组长1人,要求每组任选2题,各组不得重复选题且需独立完成课题内容,课题组成员必须清楚课题总体设计,必须分有功能模块并独立完成所分模块程序的编写任务。
最终课题组长组织连调,所有成员必须参加。
三、课程设计内容:1.二叉树的中序、前序、后序的递归、非递归遍历算法,按层次遍历的非递归遍历算法的实现,应包含建树的实现。
===================================================================2.车厢调度假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,4。
设计一个程序,求出所有可能由此输出的长度为4的车厢序列。
===================================================================3.平衡二叉树的判定给定一个二叉树的先序遍历或后序遍历结果,判定其是否为平衡二叉树。
===========================================================================4.图的基本操作与实现设计要求:(1)自选存储结构,输入含n个顶点(用字符表示顶点)和e条边的图G(2)求每个顶点的度,输出结果;(3)指定任意顶点x为初始顶点,对图G作DFS遍历,输出DFS顶点序列(提示:使用一个栈实现DFS);(4)指定任意顶点x为初始顶点,对图G作BFS遍历,输出BFS顶点序列(提示:使用一个队列实现BFS);(5)输入顶点x,查找图G:若存在含x的顶点,则删除该结点及与之相关连的边,并作DFS遍历(执行操作3);否则输出信息“无x”;===========================================================================5.图的算法实现(1)读入图的信息,建立与其对应的邻接矩阵和邻接表;(2)实现Prim、Kruskal、Dijkstra序算法。
数据结构与算法课程方案计划安排书(
测试数据:可任意选取两个一元多项式,可以是一般的多项式,也可以是稀疏多项式。
提高要求:可以根据输入变量的值,计算出多项式的结果,且算法的效率高。
3.舞伴问题
问题描述:一班有m个女生、n个男生(m不等于n>,举办一场舞会.男女生分别编号坐在舞池两边的椅子上,每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴,设计一个程序模拟舞伴配对过程。
4.文学研究助手<*)
问题描述:文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。
基本要求:英文小说存于一个文本文件中,待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计,结果保存到文件中。
测试数据:取某个单位电话号码簿中的30个记录。
提高要求:将电话号码薄以文件形式保存到盘上,能够按用户名和电话号码两种形式建立哈希表并实现插入、查找、删除表中元素的功能。
注意事项:不能用类库中的类完成题目
6.管道铺设施工的最佳方案<*)
问题描述:需要在某个城市的n个小区铺设管道,则在这n个小区之间铺设n-1条管道即可,假设任意两个居民区之间都可以架设管道,但由于地理环境的不同,所需经费不同,选择最优的施工方案使总投资尽可能的少。
基本要求:
<1)建立成绩表,能够插入、删除、修改学生的成绩记录;
<2)按任一单科成绩排序;
(3>计算每名学生的平均成绩;
(4>统计任一单科成绩不及格的学生人数,输出不及格人数及不及格的学生名单
《数据结构》课程设计时间安排表
《数据结构》课程设计时间安排表
《数据结构》课程设计时间安排表
一.设计时间:第17周——18周
二.计划安排:
1.计101,G计101、中新计101班(指导教师:汪前进、朱敏)
上机地点:二楼第1机房
2.软件101—102班(指导教师:董剑利、戴红伟)
上机地点:二楼第3机房
3.网络101—102班(指导教师:施珺、胡云)
上机地点:一楼105#机房
设计时间安排表
三.设计地点:机房、教室、学生宿舍
四.说明:
本课程设计为每位同学提供24学时的上机安排,以便能及时收集资料、编写程序实现算法、测试程序和完成设计报告;指导教师和学员必须准时到达机房,机房工作时间为上午8:30—11:30,下午2:30—5:30;指导教师要做好考勤工作和设计的指导工作;上机期间师生一律不得做与课程设计无关的事情,要严格遵守实验室规章制度,注意人身安全和设备安全。
非上机时间学生可以在教室、图书馆、宿舍等场所完成资料查阅、算法构思设计、编程调试等工作。
2011年12月13日。
13级《数据结构与算法》授课计划表(修改稿)
4
16
5
9.29-10.4
国庆放假
0
16
6
10.6-10.10
第3章栈与队列(3学时)
习题课(1学时)
4
20
1
7
10.13-10.17
第8章树与二叉树(4学时)
4
24
1
8
10.20-10.24
第8章树与二叉树(3学时)
习题课(1学时)
4
28
9
10.27-10.31
第9章图(2学时)
2
30
1
10
11.3-11.7
实验二 栈、队列的实现及应用
2学时
1
12
11.17-11.21
实验三二叉树的操作及应用
2学时
1
13
11.24-11.28
《数据结构与算法》课程设计教学大纲
《数据结构与算法》课程设计教学大纲学分:1周数:3性质:必修形式:分散建议执行学期:4一、课程设计教学的意义和目的(一)意义:课程设计是培养和锻炼学生综合运用所学知识解决实际问题的能力,是实践性教学的重要环节,它具有动手,动脑,理论联系实际的特点,是培养在校大学生理论联系实际,敢于动手,善于动脑,独立自主解决各种问题的一种较好的方法。
《数据结构与算法》是一门应用性、实践性较强的课程,忽视了实践性教学的环节,学生就会对该门课程的掌握不扎实。
(二)本教学环节的实施目的:通过课程设计,使学生学会系统地运用所学的《数据结构与算法》等课程的知识和技能解决实际问题的本领。
通过设计实验,培养学生查阅专业资料,工具书或参考书,掌握现代设计手段和软件工具,并掌握以图纸和说明书的方式表达设计思想和计算结果的能力。
通过数学建模与软件开发,不但要培养和提高学生解决具体问题,而且应建立正确的设计和科研思想,牢固树立事实求实和严肃认真的科学工作态度。
二、课程设计教学的基本要求学生必须仔细阅读《数据结构与算法》课程设计方案,认真主动完成课程设计的要求。
有问题及时主动通过各种方式与教师联系沟通。
学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时的向教师汇报。
课程设计按照教学要求需要三周时间完成,三周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序45小时。
为保证质量,需要每个学生将每天的上机调试程序的时间记录下来作为核定成绩的参考。
数据结构是一门涉及多门课程的课程,难度较大,需要较好的C语言的程序设计和调试能力,如果学生能够按照要求,从时间和精力上保证完全的投入,相信能够有很大的收获。
三、课程设计的内容及安排(一)主要内容:本次课程设计完成如下模块(共12个模块,学生可以在其中至少挑选4个功能块完成,但有**号的模块是必须要选择的,多做可以加分)1、运动会分数统计**任务:参加运动会有n个学校,学校编号为1……n。
数据结构与算法实验课表安排
数据结构与算法分析课程设计报告课题名称:拓扑排序——打印输出计算机本科专业4年每学期的课表提交文档学生姓名:提交文档学生学号:同组成员名单:指导教师姓名:指导教师评阅成绩:指导教师评阅意见:提交报告时间: 2010 年 12 月日1. 实验题目:拓扑排序——打印输出计算机本科专业4年每学期的课表2. 实验的目的和要求:(1)采用C++实现;(2)熟练掌握图的应用;(3)熟练掌握图的邻接矩阵存储结构以级拓扑排序的基本思想;(4)上机调试程序,掌握查错,排错使程序能正确运行。
3. 实验的环境:(1)硬件环境:联想G450笔记本电脑(2)软件环境:WindowsXP ,MicrosoftVisualC++6.04. 算法描述:●程序流程图 ●● ●●●●●●●●●●●●●●● 类的层次结构,每个类的设计, 包括数据成员和成员函数组成.● class Graph● {● public: 开 始构建课程信息图 读取文件,将课程信息保存在链表中 调用拓扑排序,对list 排序将结果存入sortedlist 中 利用sortedlist 安排课表 打印课表,并将课表存入文本文件 结束● virtual int e()=0;● virtual int first(int)=0;● virtual int next(int,int)=0;● virtual void setEdge(int,int,int)=0;● virtual void delEdge(int,int)=0;● virtual int weight(int,int)=0;● virtual int getMark(int)=0;● virtual void setMark(int,int)=0;●};●class Graphm:public Graph●{●public:● Graphm(int numV ert);● ~Graphm();● int n();● int e();● int first(int);● int next(int,int);● void setEdge(int,int,int);● void delEdge(int,int);● int weight(int,int);● int getMark(int);● void setMark(int,int);●private:● int numV ertex,numEdge;● int **matrix;● int *mark;●};●class Link●{●public:● Link();● Link(string code,string name,int period,int semester,string precondition);● void setCode(string str);● string getName();● void setName(string str);● int getPeriod();● void setPeriod(int p);● int getSemaster();● void setSemester(int s);● string getPrecondition();● void setPredition(string str);● Link* getNext();● void setNext(Link*);●private:●string code;●string name;●int period;●int semester;●string precondition;●Link *next;●};●class List●{●public:● List();● void addCourse(Link* course);● void insertCourse(Link* course);● Link* getHead();● Link* getTail();● void printlist();●private:● Link *head;● Link *tail;●};●测试程序说明●int main()●{● readFromFile();//从文件读取课程信息● Graphm graph(38);●buildGraph(list,&graph);//做课程信息图● topsort(&graph);//对图进行拓扑排序● sortedlist.printlist();//打印排序后的结构●cout<<endl;● courseArrange();//安排课表printSchoolTimeTable();//打印课表,并将其存入文件● return 0;●}●5.源程序清单:●添加必要的注释●static List list;//存放初始课程信息●static List sortedlist;// 存放拓扑排序后的课程信息(顺序)●static int arraynum[8];//保存每个学期要开设的课程数目●static int index; //共八个学期●static string courName;//从文件读取课程编码●static string courCode;//从文件读取课程名称●static string courPrecondition;//从文件读取课程的先决条件●static int courperiod;//从文件读取对应课程的开设学时数●static int coursemester;//从文件读取对应课程的开课学期●//读取文件数据,创建list●void readFromFile()●{●fstream input;●input.open("course_inf.txt");●char ch;●ch=input.get();●while( !(ch>='0'&&ch<='9') )//开始出现数字时,开始读取arraynum[]● ch=input.get();● if(ch>='0'&&ch<='9'&&(index<8) )● {●while(ch!='\n')●{● if(ch>='0'&&ch<='9'&&(index<8) )● arraynum[index++]=ch-48;//将读入的字符转换成对应数字● ch=input.get();●}● }● while(ch!='c')● ch=input.get();● while(ch!='\n')● ch=input.get();//跳过所有注释行●while(!input.eof())●{● if(ch=='c')● {● while(ch!=9)● {● courCode.insert(courCode.size(),1,ch);//读取courCode ● ch=input.get();● }● while(ch==9)● ch=input.get();● while(ch!=9)● {● courName.insert(courName.size(),1,ch);//读取courName● ch=input.get();● }● while(ch==9)● ch=input.get();● courperiod=ch-48;//读取 courperiod● ch=input.get();● while(ch==9)● ch=input.get();● coursemester=ch-48;//读取coursemester● ch=input.get();● while(ch==9)● ch=input.get();● if(ch=='c')● while(ch!='\n')//读取 courPrecondition● {● courPrecondition.insert(courPrecondition.size(),1,ch);● ch=input.get();● }● } //if● ch=input.get();● if(courCode.size()>0)● {● Link*courselink=newLink(courCode,courName,courperiod,● coursemester,courPrecondition);//读取一次完整的信息即可将它生成一个Link节点● list.addCourse(courselink);//将Link节点加入List● }● courCode.erase();//清除string中的内容,用于下一行次读取文件● courName.erase();● courPrecondition.erase();●}//while● input.close();●}●//建图,添加有先决条件的结点之间的边●void buildGraph(List &courseList,Graph* courseGraph)●{● Link* courselink=courseList.getHead();● int v1=0;● while(courselink!=NULL)● {● string str=courselink->getPrecondition();● for(int i=0;str[i]!='\0';)● {● if(str[i]=='c')//课程以c开头,由此分辨先决条件● {● char ch1=str[++i];● char ch2=str[++i];● int v2=10*(ch1-48)+(ch2-48)-1;//将课程号转换为整型数据,图的下标用int表示的● courseGraph->setEdge(v2,v1,1);● }● else● i++;● }● v1++;● courselink=courselink->getNext();● }●}●void tophelp(Graph* G, int v)// Process v●{● G->setMark(v, 0);● for (int w=G->first(v); w<G->n();w = G->next(v,w))● if (G->getMark(w) == 1)● tophelp(G, w);● Link* courselink=list.getHead();● for(int i=0;i<v;i++)● {● courselink=courselink->getNext();● }● sortedlist.insertCourse(courselink);//将拓扑排序的正序存入sortedlist中,用于课程的安排●}●void topsort(Graph* G) // Topological sort●{● int i;● for (i=0; i<G->n(); i++) // Initialize● G->setMark(i,1);● for (i=0; i<G->n(); i++) // Do vertices● if (G->getMark(i) == 1)● tophelp(G, i); // Call helper●}●void courseArrange()//安排课表●{●Link* temp=sortedlist.getHead();●int count[8];●for(int i=0;i<8;i++)●count[i]=0;●for(;count[0]<7&&temp!=NULL;temp=temp->getNext())//优先安排已经预设学期的课程●{● if(temp->getSemaster()==1)● count[0]++;● else if(temp->getSemaster()==2)● count[1]++;● else if(temp->getSemaster()==3)● count[2]++;● else if(temp->getSemaster()==4)● count[3]++;● else if(temp->getSemaster()==5)● count[4]++;● else if(temp->getSemaster()==6)● count[5]++;● else if(temp->getSemaster()==7)● count[6]++;● else if(temp->getSemaster()==8)● count[7]++;●}● temp=sortedlist.getHead();//再按学期顺序安排已经安排学期的课程,srtedlist中的先后顺序对应了学期的先后顺序●for(;temp!=NULL;temp=temp->getNext())●{● if(count[0]<arraynum[0])//semter1● {● if(temp->getSemaster()==0)● {● temp->setSemester(1);● count[0]++;● }● }● else if(count[1]<arraynum[1])//semter2 ● {● if(temp->getSemaster()==0)● {● temp->setSemester(2);● count[1]++;● }● }● else if(count[2]<arraynum[2])//semter3 ● {● if(temp->getSemaster()==0)● {● temp->setSemester(3);● count[2]++;● }● }● else if(count[3]<arraynum[3])//semter4 ● {● if(temp->getSemaster()==0)● {● temp->setSemester(4);● count[3]++;● }● }● else if(count[4]<arraynum[4])//semter5 ● {● if(temp->getSemaster()==0)● {● temp->setSemester(5);● count[4]++;● }● }● else if(count[5]<arraynum[5])//semter6● {● if(temp->getSemaster()==0)● {● temp->setSemester(6);● count[5]++;● }● }● else if(count[6]<arraynum[6])//semter7● {● if(temp->getSemaster()==0)● {● temp->setSemester(7);● count[6]++;● }● }● else//semter8● {● if(temp->getSemaster()==0)● {● temp->setSemester(8);● count[7]++;● }● }●}●}●void printSchoolTimeTable()//打印课表{Link* temp=sortedlist.getHead();//semter1cout<<"courses of semester 1 :"<<endl;fstream output;output.open("course_table.txt");output<<"第一学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==1){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl; }}temp=sortedlist.getHead();//semter2cout<<"courses of semester 2 :"<<endl;output<<"第二学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==2){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl; }}temp=sortedlist.getHead();//semter3cout<<"courses of semester 3 :"<<endl;output<<"第三学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==3){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl; }}temp=sortedlist.getHead();//semter4cout<<"courses of semester 4 :"<<endl;output<<"第四学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==4){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl; }}temp=sortedlist.getHead();//semter5cout<<"courses of semester 5 :"<<endl;output<<"第五学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==5){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl; }}temp=sortedlist.getHead();//semter6cout<<"courses of semester 6 :"<<endl;output<<"第六学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==6){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl;}}temp=sortedlist.getHead();//semter7cout<<"courses of semester 7 :"<<endl;output<<"第七学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==7){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl;}}temp=sortedlist.getHead();//semter8cout<<"courses of semester 8 :"<<endl;output<<"第八学期课程: "<<endl;for(;temp!=NULL;temp=temp->getNext()){if(temp->getSemaster()==8){output<<temp->getCode()<<" "<<temp->getName()<<endl;cout<<temp->getCode()<<" "<<temp->getName()<<endl;}}output.close();}6.运行结果:●测试数据选择●(课程编码,课程名称,开课学时,预设开课学期,先决条件)●("c01","程序设计基础",5,0,"") ("c02","离散数学",6,0,"c01")●("c03","数据结构",4,0,"c01 c02") ("c04","汇编语言",5,0,"c01")●("c05","算法设计",4,0,"c03 c04") ("c06","计算机组成原理",6,0,"")●("c07","微机原理",4,0,"c03") ("c08","单片机应用",3,0,"c03")●("c09","编译原理",5,0,"c03") ("c10","操作系统原理",4,0,"c03")●("c11","数据库原理",5,0,"c03") ("c12","高等数学",6,0,"")●("c13","线性代数",6,0,"") ("c14","数值分析",6,0,"c12")●("c15","普通物理",6,0,"c12") ("c16","计算机文化",3,0,"")●("c17","计算机系统结构",6,0,"c06") ("c18","计算机网络",5,0,"c03")●("c19","数据通信",6,0,"") ("c20","面向对象程序设计",3,0,"c01 c03")●("c21","Java",3,0,"c01 c03") ("c22","C#.net",5,0,"c01 c03")●("c23","PowerBuilder",5,0,"c01 c03") ("c24","VC++",3,0,"c01 c03")●("c25","ASP程序设计",6,0,"c01 c03") ("c26","JSP程序设计",5,0,"c01 c03")●("c27","",5,0,"c01 c03") ("c28","Delphi",5,0,"c01 c03")●("c29","C++Builder",5,0,"c01 c03") ("c30","英语",5,1,"")●("c31","英语",5,2,"") ("c32","英语",5,3,"")●("c33","英语",5,4,"") ("c34","英语",5,5,"")●("c35","英语",5,6,"") ("c36","英语",5,7,"")●("c37","英语",5,8,"") ("c38","大学语文",3,1,"")●测试结果分析能够正确安排课程。
《数据结构与算法分析》课程设计:顺序表、单链表、顺序栈、查找、排序算法
*******大学《数据结构与算法分析》课程设计题目:数据结构上机试题学生姓名:学号:专业:信息管理与信息系统班级:指导教师:2014年04月目录一、顺序表的操作 (2)【插入操作原理】 (2)【删除操作原理】 (2)【NO.1代码】 (3)【运行截图演示】 (7)二、单链表的操作 (10)【创建操作原理】 (10)【插入操作原理】 (10)【删除操作原理】 (10)【NO.2代码】 (11)【运行截图演示】 (20)三、顺序栈的操作 (25)【数值转换原理】 (25)【NO.3代码】 (26)【运行截图演示】 (30)四、查找算法 (32)【顺序查找原理】 (32)【折半查找原理】 (32)【NO.4代码】 (33)【运行截图演示】 (38)五、排序算法 (40)【直接插入排序原理】 (40)【快速排序原理】 (40)【NO.5代码】 (41)【运行截图演示】 (46)一、顺序表的操作(1)插入元素操作:将新元素x 插入到顺序表a 中第i 个位置;(2)删除元素操作:删除顺序表a 中第i 个元素。
【插入操作原理】线性表的插入操作是指在线性表的第i-1个数据元素和第i 个数据元素之间插入一个新的数据元素,就是要是长度为n 的线性表:()11,,,,,i i n a a a a -…………变成长度为n+1的线性表:()11,,,,,,i i n a a b a a -…………数据元素1i a -和i a 之间的逻辑关系发生了变化。
(其【插入原理】在课本P23的算法2.3有解释)【删除操作原理】反之,线性表的删除操作是使长度为n 的线性表:()111,,,,,,i i i n a a a a a -+…………变成长度为n-1的线性表:()111,,,,,i i n a a a a -+…………数据元素1i a -、i a 和1i a +之间的逻辑关系发生变化,为了在存储结构上放映这个变化,同样需要移动元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东华理工大学软件学院
2011-2012学年(二)学期课程设计安排表
软件工程系系软件工程专业 10211117-19 班级课程设计名称:数据结构与算法设计
制表人:许志文系负责人签名: 2012年5月16日
辅导时间安排表(第17周)
说明:
(1)指导教师资格审核,要求讲师以上或者具有硕士学位的讲师,一般讲师不能单独指导;
(2)一个指导教师原则上指导学生人数在20人之内,经过教务处批准后最多指导一个自然班;
(3)每个学生必须独立完成课程设计,选择同一课程设计题目的学生人数不超过5名。
(4)辅导超过1周且时间和地点变化的可用2个以上的辅导时间安排表。
(5)本表以教学班为单位,双面打印一式三份,教学科研部、系、辅导老师各一份,并在课程设计前二周交各系。