数据结构课程设计
一、设计内容(共10个模块,学生可以在其中至少挑选6个模块完成,但有**号的模块是必须要选择的)
1、 运动会分数统计**
任务:参加运动会有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以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:有中文提示,各学校分数为整形
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
2、 一元多项式计算**
任务:能够按照指数降序排列建立并输出多项式;
能够完成两个多项式的相加、相减,并将结果输入;
在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
3、 订票系统
任务:通过此系统可以实现如下功能:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票: 可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
4、 迷宫求解
任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出;
要求:
在上交资料中请写明:存储结构、基本算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
5、 猴子选大王
任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:
输入数据:输入m,n m,n 为整数,n<m
输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号 ,建立一个函数来实现此功能
6、哈夫曼编码译码实现
任务 :利用哈夫曼树实现哈夫曼编码和译码过程
要求:可以建立函数输入待编码字符和权值(或哈夫曼编码),输出其哈夫曼编码(或对应字符).
在上交资料中请写明:存储结构、基本算法(可以使用程序流程图) 、输入输出、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;
7、最小生成树问题**
问题描述:若要在n个城市之间建设通信网络,只需要架设n-1条线路即可。
如何以最低的经济建设这个通信网,是一个网的最小生成树
基本要求:
(1)利用克鲁斯卡尔算法求网的最小生成树。
(2)以文本形式输出生成树中各条边以及他们的权值
8、图的建立及输出
任务:建立图的存储结构(图的类型可以是有向图、无向图、有向网、无向网,学生可以任选两种类型),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。
9、拓扑排序
任务:编写函数实现图的拓扑排序。
10、 建立一个二叉排序树,每个结点包括:学号,姓名,年龄。输入一个学号,如果二叉排序树中的结点存在学号与该学号相等的结点则删除;如果二叉排序树中的结点不存在学号与该学号相等的结点则:插入。
------------------------------------------------
菜单程序参考函数
void mainmenu()
{
int x,y,m;
for(x=15;x<=62;x++)
{
gotoxy(x,5);
printf("*");
gotoxy(x,19);
printf("*");
}
for(y=6;y<=18;y++)
{
gotoxy(15,y);
printf("*");
gotoxy(62,y);
printf("*");
}
gotoxy(33,3);
printf("主 菜 单");
gotoxy(18,7);
printf("1、运动会分数统计; 2、一元多项式计算;");
gotoxy(18,9);
printf("3、订票系统; 4、迷宫求解;");
gotoxy(18,11);
printf("5、最小生成树; 6、猴子选大王;");
gotoxy(18,13);
printf("7、个人建图; 8、拓扑排序;");
gotoxy(18,15);
printf("9、哈夫曼树的建立; 0、退出;");
gotoxy(34,20);
printf("请选择:");
loop: scanf("%d",&m);
switch(m)
{
case 0: bye();break;
case 1: menu1();break;
case 2: menu2(); break;
case 3: menu3(); break;
case 4: menu4(); break;
case 5: menu5(); break;
case 6: menu6(); break;
case 7: menu7(); break;
case 8: menu9(); break;
case 9: menu10(); break;
case 10: tuopu(); break;
case 11: menu11(); break;
default:
{
gotoxy(25,22);
printf("输入有误,请重新选择:");
goto loop;
}
}
}//主菜单
明天只要交初稿!!!望大家帮下我,做了多少都发到我邮箱吧,感激不尽啊,明天要交了,很紧急!!!! tom6719@163.com
初稿内容应包括:1、所选择题目;2、对逻辑结构和所选择存储结构的描述说明;3、实现算法的简要描述(可采用流程图)。
[此贴子已经被作者于2006-6-29 19:34:49编辑过]