1、数据结构课程设计班级:学号:姓名:姓名: 班级: 学号:题目:地图着色一、需求分析:1. 已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少;2. 将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系;3. 演示程序以用户和计算机的对话方式进行;4. 最后对结果做出简单分析。二、概要设计:1) 数据结构的设计typedef struct /定义图vextype vexsMAXedg; /存放边的矩阵adjtype arcsMAXedgMAXedg; /图的邻接矩阵int vnum,arcnum; /图的顶点数和边数Graph;2) 功能模块的划分及模
2、块间调用关系三、详细设计:1) 主要功能模块的算法思想及其步骤着色模块:int colorsame(int s,Graph G)/判断这个颜色能不能满足要求int i,flag=0;for(i=1;iG.vnum)/递归出口output(G);exit(1);elsefor(i=1;i#include #define MAXedg 100#define MAX 0#define N 4 /着色的颜色数int color30=0;/来存储对应块的对应颜色typedef char vextype;typedef int adjtype;typedef struct /定义图vextype vexs
3、MAXedg; /存放边的矩阵adjtype arcsMAXedgMAXedg; /图的邻接矩阵int vnum,arcnum; /图的顶点数和边数Graph;/*int LocateVex(Graph G,char u) int i;for(i=1;iG.vnum)/递归出口output(G);exit(1);elsefor(i=1;i=N;i+)/对每一种色彩逐个测试colors=i;if(colorsame(s,G)=0)trycolor(s+1,G);/进行下一块的着色/*int main() Graph G;CreateGraph(G);PrintGraph(G);printf(“着色方案:n“); trycolor(1,G);return 0;四、测试结果:由于地图上各省连接关系太多,所以这里只给出简单的测试数据,来测试该程序的功能,如下:给出如下示意图,省份抽象为点,接壤抽象为有边相连。顶点为:a b c d e f 相邻边:a-b b-c b-e b-f c-d c-e c-f e-f