数据结构课程设计题目
- 格式:docx
- 大小:21.47 KB
- 文档页数:7
数据结构课程设计题目
数据结构课程设计题目
要求:
(1)每人选择一题,选好后把选题名单交给学习委员统一上交给老师
(2)要求上交源程序和课程设计报告,均为电子版,保存在自己名字的文件夹中
(3)上交前,程序调试运行成功才算完成。
(4)最后完成时间2010年1月25日,先做完的可以先交。
(5)课程设计报告参考范例
题目:
1、课本46页,2-20
2、课本46页,2-24
3、课本47页,2-25
4、课本84页,3-18
5、课本85页,3-23
6、课本110页,4-16
7、课本110页,4-17
8、课本111页,4-19
9、课本111页,4-20
10、课本126页,5-19
11、课本126页,5-20
12、课本148页,6-13
13、课本148页,6-16
14、课本251页,9-20
15、课本278页,10-31
16、课本310页,11-27
17、课本311页,11-29
18、课本311页,11-30 19、课本311页,11-31
20、文章编辑
静态存储一页文章,每行最多不超过80个字符,共N行;输入此文章,统计出文字、数字、空格的个数。
要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据可以是大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;
(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"
(3)输出删除某一字符串后的文章。
21、纸牌游戏
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...
再依次5的倍数的牌翻一次、6、7的直到以52为基数的翻过。
要求:输出最后正面向上的牌有哪些?
22、校园导航问题
要求:设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
23、学校超市选址问题(带权有向图的中心点)
要求:对于某一学校超市,学校各部门与其距离不同,并且各部门人员去超市的频度也不同。请为超市选址,要求实现总体最优。
24、稀疏矩阵的操作(1人)
稀疏矩阵采用三元组表示。 要求:(1)求两个具有相同行列数的稀疏矩阵A和B的相加矩阵C,并输出C;
(2)求出A的转置矩阵D,输出D。
25、最小生成树问题
要求:在n个城市之间建设网络,只需保证连通即可,求最经济的布线方法。存储结构采用多种。求解算法多种。
26、跳舞搭配问题
某班开一个班级舞会,有m个女生,有n个男生(m不等于n),男女生分别编号坐在舞池的两边的椅子上。每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴。
请设计一系统模拟动态地显示出上述过程,要求如下:
输出每曲配对情况;计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况。至少求出K的两个值。
提示:用队列来解决比较方便。
27、敢死队问题
有M个敢死队员要炸掉敌人的一碉堡,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,此次数到第5的战士接着去执行任务。以此类推,直到任务完成为止。假设排长为1号,请你设计一程序,求从第几号战士开始计数才能让排长最后一个去执行任务。
要求:至少采用两种不同的数据结构的方法实现。如果采用三种以上的方法者,可加分。28、学生成绩管理系统
现有学生成绩信息文件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.txt;
(2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt;
(3)对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现);
(4)输入一个学生姓名后,能查找到此学生的信息并输出结果
29、哈夫曼编码/译码器
【问题描述】设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。
【基本要求】
初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;
编码:利用建好的哈夫曼树生成哈夫曼编码;
输出编码;
设字符集及频度如下表:
字符空格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 T U V W X Y Z
频度57 63 15 1 48 51 80 23 8 18 1 16 1 30、Josephu 问题
要求::设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个结点从链表中删除算法结束。
31、通讯录制作
用双向链表作数据结构知识,编写一个通讯录管理系统。
功能:
输入信息——enter();
显示信息———display( );
查找以姓名作为关键字———search( );
删除信息———delete( );
存盘———save ( );
装入———load( ) ;
设计要求:
每条信息至包含:姓名(NAME )街道(STREET)城市(CITY)邮编(EIP)国家(STA TE)几项;并应具有友好的界面和较强的容错能力。
32、排序系统设计
功能:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,每个人持有一个正整数密码。开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m是停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人
开始重新从1报数。如此下去,直到所有人全部出列为止。令n最大值取30。要求设计一个程序模拟此过程,求出出列编号序列。
分步实施: 1初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2完成最低要求:建立一个文件,包括某人5个人的情况。
3进一步要求:有兴趣的同学可以自己扩充系统功能。
要求:1)界面友好,函数功能要划分好
2)总体设计应画一流程图
3)程序要加必要的注释
4)要提供程序测试方案
5) 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是
没有价值的。
33、树的应用
建立一个二叉排序树,每个结点包括:学号,姓名,年龄。输入一个学号,如果二叉排序树中的结点存在学号与该学号相等的结点则删除;如果二叉排序树中的结点不存在学号与该学号相等的结点则:插入。
34、串的查找和替换
问题描述:打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘.
35、用基数排序方法将一系列扑克牌按花色并按从小到大的顺序排列
36、旅行家的预算问题:
一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市,给定两个城市间的距离d1,汽车油箱的容量是c,每升汽油能行驶的距离d2,出发时每升汽油的价格是p,沿途加油站数为n(可为0),油站i离出发点的距离是di,每升汽油的价格是pi。
计算结果四舍五入保留小数点后两位,若无法到达目的地输出“No answer"
37、有一头小母牛,从出生四年后,每年生一头小母牛,每头小母牛都遵从第一头小母牛的规律,求第N年共有多少头小母牛? 38、判断是否对称矩阵
39、设有一个线性单链表,其结点值均为正数值,且按值从大到小链接。试写出一个算法,将该线性单链表分解成两个线性单链表,其中一个链表中的结点值均为奇数,而另一个链表中的结点值均为偶数,且这两个链表均按值从小到大链接。
40、公司要在电话线上传输数据,但担心电话被窃听。所有数据用四位数传输,要求编写一个程序,将数据加密后进行传输。读四位数并加密算法如下:随机要传输的读入四位数(明文),将每位数换成该位与7之和并用10 求模,然后交换第一位与第三位,交换第二位与第四位,并打印加密后的整数(密文);再编写一个程序读取加密后的四位数(密文),并解密成原来的四位数(明文)。
41、农夫过河问题
cout<<"有一个农夫过河带一条狼、一只羊和一棵白菜过河.
"<
cout<<"如果没有农夫看管,则狼要吃羊,羊要吃白菜."<
cout<<"但是船很小,只够农夫带一样东西过河。"<
p="">
cout<<"问农夫该如何解此难题?"<
conditions[0].farmer = 0;