一.课程设计的任务
本次设计是为加强学生的软件编程能力而进行的专门训练。选题考虑到学生在数据结构中学过的各种算法、数据组织方式进行选题,考虑数据结构算法所涉及的操作系统、网络、编译方法等中的实例,进行设计。
下面是课程设计待选题目共43题。按学号相应选题,如:学号为01,则选择第1题。分析题目,完成相应题目的程序设计。
1、商品管理
问题描述:以链表结构的有序表表示某商场家电部的库存模型,当有提货或进货时需要对该链表及时进行维护,每个工作日结束以后,将该链表中的数据以文件形式保存,每日开始营业之前,须将文件形式保存的数据恢复成链表结构的有序表。
实现要求:链表结构的数据域 包括家电名称、品牌、单价和数量,以单价的升序体现链表的有序性。程序功能包括:初始化、创建表、插入、删除、更新数据、查询及链表数据与文件之间的转换等。
2、编程整理表达式
键盘输入一个含有括号的四则运算表达式,可能含有多余的括号,编程整理该表达式,去掉所有多余的括号,原表达式中所有变量和运算符相对位置保持不变,并保持与原表达式等价。
3、个人帐簿管理
问题描述:个人帐簿管理系统记录某人每月的全部收入及各项开支情况,包括食品消费,房租,子女教育费用,水电费,医疗费,储蓄等。进入系统后可以输入和修改某月的收支情况,可以对每月的开支从小到大进行排序,可以根据输入的月份查询每月的收支情况。
实现要求:
1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;
2. 完成最低要求:建立一个文件,包括某人5个月的收支情况,能对文件中的信息进行扩充(追
加),修改和删除;
3. 进一步要求:完成对每月的开支排序,以及完成系统查询功能。有兴趣的同学可以自己扩充系
统功能。
4、实现:连通无向图的非递归遍历。 5、招聘模拟。
问题描述:某集团公司为发展生产向社会公开招聘m个工种的工作人员,每个工种
各有不同的编号(o,1,3,?m一1)和计划招聘人数,参加应聘的人数有n个(编号为o,1, 2,?n一1)。每位应聘者可以申报两个工种,并参加公司组织的考试。公司将按应聘者 的成绩,从高到低的顺序排队录取。公司的录取原则是:从高分到低分依次对每位应聘者 先按其第一志愿录取;当不能按第一志愿录取时,便将他的成绩扣去5分后,重新排队.并 按其第二志愿考虑录取。
实现要求:要求程序输出每个工种录用者的信息(编号、成绩>,以及落选者的信息 (编号、成绩)。
程序设计思路:程序中按应聘者的成绩从高到低的顺序排队录取。如果在第一志愿 队列中落选,便将他的成绩扣去5分后重新排队,并按其第二志愿考虑录取。程序为每个 工种保留一个录取者的有序队列。录取处理循环直至招聘额满或已对全部应聘者都做了 录用处理。
6、求矩阵的所有马鞍点。
矩阵A中的元素若满足:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称元素A[i,j]为该矩阵的一个马鞍点。求出m×n矩阵的所有马鞍点。
7、最少换车次数问题。
问题描述: 设某城市有n个车站,并有m条公交线路连接这些车站。设这些公交车 都是单向的,这n个车站被顺序编号为0-n-1。编号程序,输入该城市的公交线路数, 车站个数,以及各公交线路上的各站编号。
实现要求:求得从站0出发乘公交车至站n一1的最少换车次数。
程序设计思路:利用输入信息构建一张有向图G(用邻接短阵g表示),有向图的顶 点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为 1的有向边<i,j)。这样,从站x至站y的最少上车次数便对应于图G中从点x至点y 的最短路径长度。而程序要求的换车次数就是上车次数减1。
8、实现: 拓扑排序 9、图的算法实现
问题描述:图的存储结构的建立、Prim、Kruskal、Dijkstra和拓扑排序算法。 实现要求:
(1)将图的信息建立文件;
(2)从文件读入图的信息,建立邻接矩阵和邻接表; (3)实现Prim、Kruskal、Dijkstra和拓扑排序算法。
10、实现二叉树的叶子结点按从左到右的顺序连成一个单链表
请设计一个算法,把二叉树的叶子结点按从左到右的顺序连成一个单链表。二叉树用二叉链存储,链接时用叶子结点的rchild 域存放指针。
11、模拟实现五子棋
在围棋比赛中,某一方(假设为黑方)在棋盘的某个位置(i,j)下子后,有可能提取对方(白方的一串子)。以W[19][19]表示一个棋盘,若W[i][j]=0表示在位置(i,j)上没有子,W[i][j]=1表示该位置上的是黑子,W[i][j]=-1表示该位置上是白子。模拟实现五子棋 过程。
12、实现:判别给定的二叉树是否为二叉排序树。 13、文章编辑
问题描述:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;
实现要求:
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
2
(2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出\全部字母数\、\数字个数\、\空格个数\、\文章总字数\(3)输出删除某一字符串后的文章
14、实现:对一个存储为邻接表的图,给出求其所有连通分量。 15、管道铺设设计
问题描述:N(N>10)个居民区之间需要铺设煤气管道。假设任意两个居民区之间都可以 铺设煤气管道,但代价不同。
实现要求:事先任意两居民区之间铺设煤气管道的代价存入磁盘文件中。设计一个最佳方案使得这N个居民区之间铺设煤气管道所需代价最小,并将结果以图形方式在屏幕上输出。
16、排序算法的实现与比较
问题描述:编程实现希尔、快速排序算法,并利用程序统计每种算法的执行时间。
实现要求:随机产生10000、50000、 100000、 200000个待排数据存入磁盘文件,从磁盘文件读入待排数据进行排序,并将排序结果写入另一个文件中。
17、实现排序:
设一单向链表的头指针为head,链表的记录中包含着整数类型的key域,试设计算法,将此链表的记录按照key递增的次序进行就地排序.(不允许使用数组做辅助存储)
18、统计C程序单词的个数
问题描述:扫描c源程序,利用hash技术和二分查找技术统计该源程序中的关键字出现的频度,并比较各自查找的次数。
实现要求: (1)、先用Hash表存储c语言中32个关键字,再扫描c源程序取出每个单词,利用Hash查找技术统计该程序中的关键字出现的频度。发生Hash冲突用线性探测法解决。设Hash函数为:
Hash(key)=[(key的第一个字母序号)*100+(key的最后一个字母序号)] MOD 41。 (2)、用顺序表存储c语言中的关键字,把c源程序取出每个单词利用二分查找技术统计该程序中的关键字的出现频度。
19、擦数游戏
在黑板上从1开始写出一组连续的自然数,然后擦去其中的一个数k,其余的数的平均值为a/b(a,b为整数)。试编写程序求出被擦去的数k。
20、医院选址
问题描述:有n个村庄,现要从这n个村庄中选择一个村庄新建一所医院,使其余的村庄到这所医院的距离总体来说较短,设计较合理。
3
实现要求:可以将问题抽象为有n个接点,在这n个接点之间建立一个无向图,边上的权值w(i,j)表示村庄i到j之间道路的长度, 在无向图中n个顶点之间,最多可能设置n(n-1)/2条线路,如何在这些线路中选择n-1条线路,以使总的线路最短?对于n个顶点的连通网可以建立许多不同的无向图,每一个无向图都可以表示一个道路网,其中要选择一个最优图,使图上各边之小。
21、求二叉树根结点到指定结点的路径。 22、保龄球记分系统
问题描述:保龄球一局分10轮,每轮可按球一次或多次,以击倒的球数为依据得分。 一局得分为10轮得分之和,而每轮的得分不仅与本轮滚球情况有关,还可能与后续一两 轮的滚球情况有关。即某轮某次滚球击例的球数不仅要记入本轮得分,还可能记入前一 两轮得分。具体的滚球规则和记分规则如下。
(1)若一轮的第一次该球就击倒10个球,则本轮不再滚球(若是第10轮则还需另加 两次滚球),该轮的得分为本次击倒球数10与以后两次滚球所击倒的球数之和。
(2)若某一轮的第一次滚球未击倒10个球,则可对剩下的球再击一次。如果两次击 倒10个球,则本轮不再滚球(若是第10轮则还需另加一次滚球),该轮的得分为本次击倒 球数10与下一次滚球所击倒的球数之和。
(3)若某一轮的两次滚球未击倒10个球,则本轮不再滚球。该轮的得分为本轮击倒 的球数。
实现要求:程序要求输出10轮中各轮的第一次得分和第二次得分,以及各轮得分和 总分。
程序设计思想 程序交互地逐轮输入一次滚球击倒的球数ball1和ball2,计算该轮 得分score和累计得分total。为记录因一轮击倒10个球,还暂时不能计算该轮的得分和
累计总分的情况,程序引入变量frame,用来记录当前已完成完整计算的轮次,程序每输入一次滚球击倒球数,就检查还未完成完整计算的轮次,并计算之。
23、修改起泡排序
试修改起泡排序,以交替的正、反两个方向进行扫描。即第一趟把排序码最大的记录放到最末尾,第二趟把排序码最小的记录放到最头上。如此反复进行。
24、运动会分数统计:
问题描述:参加运动会有n个学校,学校编号为1??n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1??m,女子m+1??m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 实现要求:
1). 可以输入各个项目的前三名或前五名的成绩; 2).能统计各学校总分,
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
4
25、堆排序的实现:
在顺序结构上完成,先建堆然后重建堆,最后实现全部排序
26、公园的导游图
问题描述::给出一张某公园的导游图,游客通过终端询问可知:
从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。 实现要求:
1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数; 2. 完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能;
3. 进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。
27、万年历:
通过给定的年,求该年的日历,闰年算法:{Y%4 &&!Y0}||Y@0==0
28、归并排序算法:用两路归并算法,实现N个无素的排序 29、学籍管理
对学生、课程、成绩分别建立三个数据文件(学生、课程、成绩属性自定)。查询①某个学生的选课情况②成绩不及格的学生情况③对课程名按不及格学生人数进行排序④建立模拟索引。
30、最短路径:求图中任意两点间的最短路径 31、旅游交通查询系统:
实现功能:火车信息查询、最短路径查询、火车信息编辑、读入修改信息、查看火车信息、查看城市信息。每个功能中又有一些小功能,如火车信息查询中有:按车次查询、按出发地与目的地查询(其中又有最快、最省钱、全部选择)中转站查询、查看火车信息,火车信息编辑又包括:添加火车信息、删除火车信息、查看火车信息、保存火车信息功能。
32、房产信息管理
自己建立数据文件的方式对房产信息进行如下管理:①查询②修改③排序
33、供货信息管理
自己建立数据文件的方式对供货信息进行如下管理:①查询②修改③排序。商店货架以栈的形式摆放商品,生产日期越近的越靠近栈底,出栈是从栈顶取货,一天营业结束,如果货架不满,则需上货,如果直接将商品摆放到货架上,则会使生产日期越近的越靠近栈顶.这就需要倒货架,仍使生产日期越近的越靠近栈底。写出货物进栈、出栈算法。
34、银行业务模拟问题描述:
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库09级《数据结构》课程设计任务书在线全文阅读。
相关推荐: