1、数据结构课程设计题目1. 飞机订票系统(限 1 人完成) (顺序或链式存储)任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓) ;可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件要
2、求:根据以上功能说明,设计航班信息,订票信息,客户信息的存储结构,设计程序完成功能;2. 宿舍管理查询软件(限 1 人完成)任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:采用交互工作方式建立数据文件,包括学生信息、宿舍信息、住宿信息,学生信息按关键字(姓名、学号)进行排序(排序方法自选,不能相同);查询: (用二分查找实现以下操作)按姓名查询 按学号查询 (用顺序查找实现以下操作)按房号查询3. 校园导航问题(限 1 人完成)设计要求:设计你的学校的平面图,至少包括 10 个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径
3、) 。要求:能增加场所4. 图书借阅管理系统(限 1 人完成) (顺序或链式存储)主要分为两大功能:1) 图书管理(增加图书、查询图书、删除图书、图书借阅、还书);2) 会员管理(增加会员、查询会员、删除会员、借书信息);5. 学生成绩管理(限 1 人完成) (顺序或链式存储)包括:课程信息,学生信息等;能增加课程或学生。实现功能:输入、输出、插入、删除、查找、显示、保存、排序、退出。6. 活期储蓄帐目管理(限 1 人完成)活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:1) 能比较迅速地找到储户的帐户,以实现存款、取款记账;2) 能比较简单,迅速地实现插入和删除,以实现开户
4、和销户的需要。7. 通讯录的制作(限 1 人完成)设计目的:用数据结构 中的双向链表作数据结构,编写一个通讯录管理系统。以把所学数据结构知识应用到实际软件开发中去。设计内容:本系统应完成一下几方面的功能:1) 输入信息enter();2) 显示信息display( );3) 查找以姓名作为关键字 search( );4) 删除信息delete( );5) 存盘save ( );6) 装入load( ) ;7) 排序-sort()设计要求:1) 每条信息至少包含 :姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STATE)几项2) 作为一个完整的系统,应具有友好的界面
5、和较强的容错能力8. 哈夫曼编码/译码器(限 1 人完成)【问题描述】设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。【基本要求】1) 将权值数据存放在数据文件(文件名为 data.txt,位于执行程序的当前目录中) 2) 初始化:键盘输入字符集大小 n、n 个字符和 n 个权值,建立哈夫曼树;3) 编码:利用建好的哈夫曼树生成哈夫曼编码;4) 输出编码;5) 设字符集及频度如下表:字符 空格 A B C D E F G H I J K L M频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20字符 N O P Q R S
6、 T U V W X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 19. 图书管理系统(限 1 人完成) (顺序或链式存储)【问题描述】设计一个计算机管理系统完成图书管理基本业务。【基本要求】1) 每种书的登记内容包括书号、书名、著作者、现存量和库存量;2) 对书号建立索引表(线性表)以提高查找效率;3) 系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;*借阅:如果一种书的现存量大于 0,则借出一本,登记借阅者的书证号和归还期限,改变现存量; *归还:注销对借阅者的登记,改变该书的现存量。*对借阅者信
7、息的管理,增加、删除、查找等10. 电话号码查找系统(限 1 人完成)【问题描述】利用散列表的设计与实现电话号码查找系统。【基本要求】1) 设每个记录有下列数据项:电话号码、用户名、地址;2) 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;3) 采用一定的方法解决冲突;4) 查找并显示给定电话号码的记录;查找并显示给定用户名的记录。11. 一元多项式的实现。 (限 1 人完成)设有一元多项式 Am(x)和 Bn(x).Am(x)=A0+A1x1+A2x2+A3x3+ +AmxmBn(x)=B0+B1x1+B2x2+B3x3+ +Bnxn请实现求 M(x)= Am(x)+Bn(x)
8、、M(x)= A m(x)-Bn(x)和 M(x)= Am(x)Bn(x)。要求: 1) 首先判定多项式是否稀疏2) 分别采用顺序和动态存储结构实现;3) 结果 M(x)中无重复阶项和无零系数项;4) 要求输出结果的升幂和降幂两种排列情况12. 表达式的值 1(限 1 人完成)要求:从文件读取表达式,判断表达式是否合理,将表达式转换成后缀形式,按后缀表达式求值;题目涉及加减乘除,带括弧的混合运算;随时可以退出;13. 表达式的值 2(限 1 人完成)要求:从键盘输入表达式,利用算符优先原则求中缀表达式,并将表达式及其结果存入指定文件,可重复计算。14. 学生成绩管理系统(限 1 人完成)现有学
9、生成绩信息文件 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.tx
10、t3) 对合并后的文件 3.txt 中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体,链或数组等实现上述要求.15. 图的遍历和生成树求解实现(限 1 人完成)要求:1) 先任意创建一个图;2) 图的 DFS,BFS 的递归和非递归算法的实现3) 最小生成树(两个算法)的实现,求连通分量的实现4) 要求用邻接矩阵、邻接表结构存储实现16. 排序综合(限 1 人完成)利用随机函数产生 N 个随机整数(20000 以上) ,对这些数进行多种方法进行排序。要求:1) 至少采用 7 种方法实现上述
11、问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序) 。并把排序后的结果保存在不同的文件中。2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比) ,找出其中两种较快的方法。17. josephs 环 (限 1 人完成)任务:编号是 1,2,,n 的 n 个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数) 。一开始任选一个正整数作为报数上限值 m,从第一个仍开始顺时针方向自 1 开始顺序报数,报到 m 时停止报数。报 m 的人出列,将他的密码作为新的 m 值,从他在顺时针方向的下一个人开始重新从 1 报数,如此下去,直到所有
12、人全部出列为止。设计一个程序来求出出列顺序。要求:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。测试数据:m 的初值为 20,n=7 ,7 个人的密码依次为 3,1,7,2,4,7,4,首先 m=6,则正确的输出是什么?要求:输入数据:建立输入处理输入数据,输入 m 的初值,n ,输入每个人的密码,建立单循环链表。输出形式:建立一个输出函数,将正确的输出序列18. HUFFMAN 树及编码(限 1 人完成)随机输入一篇英文文章(或读一个 TXT 文件) ,生成并显示 HUFFMAN 树,输出每个字母的 HUFFMAN 编码,判断 ASCII 编码与 HUFFMAN 编码对
13、本篇报文长度节省效果。19. 拓扑排序(限 1 人完成)问题描述 建立图的存储结构,能够输入图的顶点和边的信息,并存储到相应存储结构中,再编写函数实现图的拓扑排序。基本要求 1)选择邻接表作为有向图的存储结构模拟整个过程,并输出拓扑排序的顶点序列。2)给出逆向的拓扑有序序列。测试数据 利用下图中的数据调试程序C1C2C3C4 C5C6C7C8C9 C10C11C1220. 简单的职工管理系统(限 1 人完成) (顺序或链式存储)1.问题描述对单位的职工进行管理,包括插入、删除、查找、排序等功能。2.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。(1)新增一名职工
14、:将新增职工对象按姓名以字典方式增加到职工管理文件中。(2)删除一名职工:从职工管理文件中删除一名职工对象。(3)查询:从职工管理文件中查询符合某些条件的职工。(4)修改:检索某个职工对象,对其某些属性进行修改。(5)排序:按某种需要对职工对象文件进行排序。3.实现提示职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。(2)对职工对象中的“姓名“按字典顺序进行排序。(3)对排序后的职工对象进行增、删、查询、修改等操作。21. 哈希表设计(限 1 人完成)问题描述:针对自己的班集体中的“人名”设计一个哈希表,使得
15、平均查找长度不超过 R,完成相应的建表和查表程序。基本要求:假设人名为中国姓名的汉语拼音形式。待填入哈希表的人名共有30 个,取平均查找长度的上限为 2。哈希函数用除留余数法构照,用链表法处理冲突。测试数据:读取熟悉的 30 个人的姓名。22. 计算一元稀疏多项式(限 1 人完成)要求完成如下功能:(1) 输入并建立多项式creatpolyn()(2) 输出多项式,输出形式为整数序列,序列按指数升序排列printpolyn()(3) 多项式 a 和 b 相加,建立多项式 a+b,输出相加的多项式addpolyn()(4) 多项式 a 和 b 相减,建立多项式 a-b,输出相减的多项式subpo
16、lyn()用带表头结点的单链表存储多项式。测试数据:(1)(2x+5x 8-3.1x11)+(7-5x8+11x9)(2) (6-3x+4.4x 2-1.2x9)-(-6-3x+5.4x2+7.8x15)(3)(x+x 2+x3)+0(4)(x+x 3)-(-x-x-3)23. 敢死队问题(限 1 人完成)有 M 个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到 5 时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没
17、完成任务,再从下一个战士开始数数,被数到第 5 时,此战士接着去执行任务。以此类推,直到任务完成为止。排长是不愿意去的,假设排长为 1 号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。要求:至少采用两种不同的数据结构的方法实现。24. 关键路径(限 1 人完成)问题描述:设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。基本要求:(1)对一个描述工程的 AOE 网,应判断其是否能够顺利进行。(2)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。 25. 教学计划编制问题
18、(限 1 人完成) 问题描述大学的每个专业都要制定教学计划。假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限值均相等,每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。每门课恰好占一个学期。试在这样的前提下设计一个教学计划编制程序。基本要求(1)输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占 3 位的字母数字串)、学分和直接先修课的课程号。(2)允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。(3)若根据给
19、定的条件问题无解,则报告适当的信息;否则将教学计划输出到用户指定的文件中。计划的表格格式自行设计。测试数据学期总数:6;学分上限:10;该专业共开设 12 门课,课程号从 C01 到 C12,学分顺序为2,3,4,3,2,3,4,4,7,5,2,3。先修关系如下:课程编号 课程名称 先决条件C1 程序设计基础 无C2 离散数学 C1C3 数据结构 C1,C2C4 汇编语言 C1C5 语言的设计和分析 C3,C4C6 计算机原理 C11C7 编译原理 C5,C3C8 操作系统 C3,C6C9 高等数学 无C10 线性代数 C9C11 普通物理 C9C12 数值分析 C9,C10,C1实现提示可设
20、学期总数不超过 12,课程总数不超过 100。如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。应建立内部课程序号与课程号之间的对应关系。26. 客户消费积分管理系统(限 1 人完成) (顺序或链式存储)问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求:1. 采用一定的存储结构进行客户信息的存储;2. 对客户的信息可以进行修改、删除、添加;3. 能够根据消费情况进行客户积分的计算;根据积分情况实行不同程度的打折优惠; 27. 产品进销存管理系统(限 1 人完成) (顺序或链式存储)问题描述:针对某一种行业的库房的产品进销存情况进
21、行管理。基本要求:1. 采用一定的存储结构对库房的货品及其数量进行分类管理;2. 可以进行产品类的添加、产品的添加、产品数量的添加;3. 能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;28. 任意长的整数加法(限 1 人完成)问题描述:设计一个程序实现两个任意长的整数的求和运算。基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。29. 构造可以使 n 个城市连接的最小生成树 (限 1 人完成)问题描述:给定一个地区的 n 个城市间的距离网,用 Prim 算法或 Kr
22、uskal 算法建立最小生成树,并计算得到的最小生成树的代价。基本要求:1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。2、表示城市间距离网的邻接矩阵(要求至少 10 个城市,20 条边)3、最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。30. 实时监控报警系统(限 1 人完成) 问题描述:建立一个报警和出警管理的系统基本要求:1. 采用一定的存储结构存储报警信息,要求有内容、时间;2. 有一次的出警就应该在待处理的信息中删除这条信息;3. 记录出警信息;待处理信息过多时会发出警告;31. 学生搭配问题(限 1 人完成)一班有 m 个女生,有 n 个男生 (m 不等于 n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下:1)输出每曲配对情况2)计算出任何一个男生(编号为 X)和任意女生( 编号为 Y),在第 K 曲配对跳舞的情况.至少求出 K 的两个值.3)尽量设计出多种算法及程序提示:用队列来解决比较方便 .