1、数据结构 课程设计一、数据结构课程设计的目的与要求1、目的: (1)要求学生达到熟练掌握 C 语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题 .2、基本要求: (1)要求利用 TC 的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的结构体层次;(3)在系统的设计中,至少要做到基本管理要求.(4)学生必须仔细阅读数据结构课程设计方案,认真主动完成课设的要求 .有问题及时主动通过各种方式与教师联系沟通.(5)学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划 ,并在课设过程中不断检测自己
2、的计划完成情况,及时的向教师汇报.(6)独立思考,课程设计中各任务的设计和调试要求独立完成,遇到问题可以讨论,但不可以拷贝.(7)课程设计按照教学要求需要一周时间完成,一周中每天 (按每周 5 天)至少要上 3-4 小时的机来调试 C 语言设计的程序, 总共至少要上机调试程序 18 小时.3、创新要求: 在基本要求达到后,可进行创新设计,如根据排序名次评定奖学金.4、写出设计说明书. 数据结构是一门涉及多门课程的课程,难度较大,需要较好的 C 语言的程序设计和调试能力,如果学生能够按照要求,从时间和精力上保证完全的投入,相信能够有很大的收获,几分投入几分收获,努力吧,同学们,不在此时更待何时!
3、二、课程设计的题目1、建立二叉树,层序、先序遍历( 用递归或非递归的方法都可以)任务:要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数; 2、 赫夫曼树的建立任务:建立最优二叉树函数要求:可以建立函数输入二叉树 ,并输出其赫夫曼树在上交资料中请写明:存储结构、 基本算法( 可以使用程序流程图) 、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;3、图的建立及输出任务:建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图
4、的顶点和边的信息 ,并存储到相应存储结构中,而后输出图的邻接矩阵.4、运动会分数统计任务:参加运动会有 n 个学校 ,学校编号为 1n.比赛分成 m 个男子项目,和 w 个女子项目.项目编号为男子 1m,女子 m+1m+w.不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为 :5、3、2;哪些取前五名或前三名由学生自己设定.(m=20,n=20)功能要求:1.可以输入各个项目的前三名或前五名的成绩;2.能统计各学校总分;3.可以按学校编号、学校总分、男女团体总分排序输出;4.可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校
5、.规定:输入数据形式和范围:20 以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单 ,根据提示,可以完成相关的功能要求.存储结构:学生自己根据系统功能要求自己设计 ,但是要求运动会的相关数据要存储在数据文件中.5、学生成绩管理系统要求是这样的:1、用 c 语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理.2、具体要求:建立一个 4 个学生的信息登记表,每个学生的信息包括:学号,姓名,和 3 门课程的成绩(FOX,C,ENGLISH).程序运行时显示一个简单的菜单,例如:(1):信息输入(
6、INPUT)(2):总分统计(COUNT)(3):总分排序(SORT)(4):查询(QUERY)其中:(1):对 4 个学生的信息进行输入;(2):对每个学生的 3 门课程统计总分;(3):对 4 个学生的总分按降序排序并显示出来;(4):查询输入一个学号后,显示出该学生的有关信息;6、图的遍历的演示学生可以根据需要选择深度优先搜索遍历和广度优先搜索遍历的其中一种.7、拓扑排序建立有向无环图,并输出拓扑的序列.8、最小生成树 kruskal 算法.9.民航订票系统;任务:通过此系统可以实现如下功能 :1.录入可以录入航班情况(数据可以存储在一个数据文件中 ,数据结构、具体数据自定)2.查询可以
7、查询某个航线的情况(如 ,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3.订票 (订票情况可以存在一个数据文件中 ,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4.退票可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号.5.修改航班信息:当航班信息改变可以修改航班数据文件.基本要求:1.根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2.界面要求:有合理的提示,每个功能可以设立菜单 ,根据提示,可以完成相关的功能要求.根据系统功能要求,
8、可以将问题解决分为以下步骤: a) 写出需求分析(做什么) b) 分析系统中的各个实体之间的关系及其属性和行为; c) 根据问题描述,设计系统关系模型图.e) 完成每个函数的定义; f) 用户界面的设计g) 分析系统功能模块(系统流程图) h) 代码编写i) 功能调试; j) 完成系统总结报告以及系统使用说明书. 10. 文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数.静态存储一页文章,每行最多不超过 80 个字符,共 N 行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前
9、移.存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号. 输出形式:(1)分行输出用户输入的各行字符;(2)分 4 行输出“全部字母数“、“数字个数“、“ 空格个数“、 “文章总字数“(3)输出删除某一字符串后的文章;11. 编写一个猜数字游戏,有一定的容错功能,界面友好,功能齐全.游戏规则: a,一个四位数,各位上的数字不重复,从 1 到 9.b,按以下提示猜出这个四位数. c,每次猜测输入的数据给出类似的提示*A*B.d,其中 A 前的*代表你本次猜对了多少个数字 . e,其中 B 前的* 代表你本次猜对的数字并且位置
10、正确的个数.12. 根据以下描述编写一个程序,使其能完成对稀疏矩阵的压缩与还原,即给定稀疏矩阵可以压缩存储一个三元组,并且能根据这个三元组能还原这个稀疏矩阵.一个矩阵含有非零元素比较少,而零元素相对较多,这样的矩阵称为稀疏矩阵,对稀疏矩阵的存储我们不用完全的二维数组来存储,可以用一个三元组,即任意一个稀疏矩阵可以用一个只有三列的二维数组来存放,如其 Compress3这个称为三元组,他是一个含有多行的只有三列的矩阵,其中第 0 行数据分别表示该稀疏矩阵的行数,列数和非零元素个数.以后每行表示一个非零元素的行数,列数和非零元素值,如:第 3 行中的 2,4,4 代表稀疏矩阵中的非零元素 4在第
11、2 行,第 4 列,其值是 4.13. 写出 6+1 彩票开奖的情况,当前 6 个号码和特别号都对的时候,这个时候是特等奖.如果前面 6 个号码都对的时候,中的是一等奖.在前面 6 个数字中连续的对了 5 个的时候,中的是二等奖.在前面 6 个数字中连续的对了 4 个的时候,中的是三等奖.请编写程序,实现连续多个输入,并在每次输入以后显示号码中奖的情况.14. 用 C 语言设计一个日历系统功能要求 :1)输入任一年将显示出该年的所有月份日期,对应的星期2)注意闰年情况其显示格式要求如下:1)份:中文英文都可以,2)下一行显示星期,从周日到周六 ,中英文都可以3)下一行开始显示日期从 1 号开始
12、 ,并按其是周几实际情况与上面的星期数垂直对齐当输入 2004 显示如下:Input the year:2004Input the file name:aThe calendar of the year 2004.Januray 1 February 2Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat1 2 3 1 2 3 4 5 6 74 5 6 7 8 9 10 8 9 10 11 12 13 1411 12 13 14 15 16 17 15 16 17 18 19 20 2118 19 20 21 22 23 24 22 2
13、3 24 25 26 27 2825 26 27 28 29 30 31 29March 3 April 4Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat1 2 3 4 5 6 1 2 37 8 9 10 11 12 13 4 5 6 7 8 9 1014 15 16 17 18 19 20 11 12 13 14 15 16 1721 22 23 24 25 26 27 18 19 20 21 22 23 2428 29 30 31 25 26 27 28 29 3015. 二叉排序树与平衡二叉树的实现(1)以回车(n)为输入结
14、束标志,输入数列 L,生成一棵二叉排序树 T;(2)对二叉排序树 T 作中序遍历,输出结果;(3)计算二叉排序树 T 查找成功的平均查找长度,输出结果 ;(4)输入元素 x,查找二叉排序树 T,若存在含 x 的结点,则删该结点 ,并作中序遍历( 执行操作 2);否则输出信息“无 x“;(5)用数列 L,生成平衡的二叉排序树 BT:当插入新元素之后,发现当前的二叉排序树 BT 不是平衡的二叉排序树,则立即将它转换成新的平衡的二叉排序树 BT; (6)计算平衡的二叉排序树 BT 的平均查找长度,输出结果.16.稀疏矩阵的操作基本功能要求:(1)稀疏矩阵采用三元组表示,求两个具有相同行列数的稀疏矩阵
15、 A 和 B 的相加矩阵 C,并输出 C.(2)求出 A 的转置矩阵 D,输出 D.三、程序设计和调试:其中包括:a)需求分析 :在该部分中叙述,每个模块的功能要求.b)概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图), 每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义 .c)详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写 .要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释.d)调试分析测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想.四、报告包括系统设计要求,设计思路,系统功能模块图,系统流程图,调试过程,关键程序代码,总结,参考书目等.