编辑: 学冬欧巴么么哒 | 2018-01-18 |
一、课程设计目的…3
二、课程设计内容…3
三、概要设计…5
四、详细设计…7
五、调试分析…19
六、总结…24
七、附录、源代码…25
八、参考书目…43 课程设计的目的
1、 使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法.
2、使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力.
3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力. 数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用.学习数据结构的最终目的是为了获得求解问题的能力.对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答. 课程设计的内容 题目 (1)、最小生成树问题 (2)、查找和排序 (3)、霍夫曼编码
2、题目说明 (1)、在文件conf.txt中保存一个带权的无向图邻接矩阵,格式:
0 1
6 2
1 0
3 5
6 3
0 7
2 5
7 0 界面上有一个按钮,点击,能够在界面上画出该图,以及各边的权值.然后显示最小生成树. (2)、在文件conf.txt中保存若干个数字,用空格隔开.格式如:
45 78
85 45
63 21
47 86 点击界面上的按钮,要求能够在界面上画出相应的二叉排序树. 任选一种排序方法:插入排序、选择排序、冒泡排序、快速排序、堆排序,在图形界面上显示每一趟的结果. (3)、文件conf.txt中保存了若干字母及其出现的频度,要求所有频度加起来要为1,否则载入时报错.字母及其频度保存的格式为: a:0.1 b:0.2 c:0.3 …… 界面上,首先出现一个按钮,点击,载入conf.txt.然后输入一个字符串,由这些字母组成.点击按钮,显示哈夫曼编码的结果.同时,界面上如果输入哈夫曼编码,也能被翻译成相应的字母.如果输入格式错误,要求给予提示. 概要设计 最小生成树功能模块 查找与排序功能模块 霍夫曼编码功能模块 冒泡排序流程图 详细设计 最小生成树(根据输入数据选择合适算法) (1)、数据类型、结构体 #define MaxVertexNum
12 /*最大定点数*/ #define MaxEdgeNum
20 /*最大边数*/ #define MaxValue
1000 /*最大权值*/ #define MAXVEX
6 #define MAX 1e+8 typedef int Vertextype;
typedef int adjmatrix[MaxVertexNum][MaxVertexNum];
typedef Vertextype vexlist[MaxVertexNum];
typedef int VexType;
typedef int AdjType;
typedef struct edgeElem edgeset[MaxVertexNum];
struct edgeElem {int fromvex;
//头顶点 int endvex;
//尾顶点 int weight;
//权};
typedef struct { int n;
图的顶点个数 */ /*VexType vexs[MAXVEX]顶点信息 */ AdjType arcs[MAXVEX][MAXVEX];
/* 边信息 */ } GraphMatrix;
typedef struct{ int start_vex, stop_vex;
边的起点和终点 */ AdjType weight;
边的权 */ } Edge;
Edge mst[5];
(2)、函数功能 void Creat_adjmatrix //输入、存储、初始化边表 { int i,j,k,w,x,y;
printf("输入%d个顶点序号(0-m-1),序号从0开始.",m);
for(i=0;
i=m) { printf("您输入的序号有误,请输入0到%d-1之间的数,请重新输入.\n",m);