- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
PAGE 1
课程设计报告
课程设计题目:地图着色问题
专业:xxxxxxxxx
班级:xxxxxxxxx
姓名:xxxxxxxxx
一:需求分析:
已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少;
将各省进行编号,然后利用无向图个顶点之间的边来表示各省的相邻关系;
演示程序以用户和计算机的对话方式进行;
最后对结果做出简单分析。
二:概要设计
一:设计思路
把34个省看成34个顶点,从选定的第一个顶点开始着色,先试第一种颜色,如果这个颜色与这个顶点的其他邻接顶点的颜色不重复,则这个顶点就是用这种颜色,程序开始对下一个顶点着色;如果着色重复,则使用下一种颜色重复上面的操作。着色过程就是一个递归的过程,直到所有的顶点都处理完后结束着色。
二:数据结构设计
因为这个程序是对图的操作,所以程序采用的逻辑结构是图状,存储结构选用邻接表,考虑用邻接表是因为一般的地图的某一个顶点并不会与很多的顶点相邻接,如果用邻接矩阵会浪费很多的存储空间,所以我选择的邻接表来存储。
其中:
typedef struct ArcNode
{
int x; (表示与当前顶点所表示省份相邻的省份的位置信息)
struct ArcNode *next; (指向下一个弧结点)
}ArcNode; (表示省份之间相邻关系的弧结点)
typedef struct
{
char *name; (顶点所表示的省份的名称)
int color; (省份的颜色,用数字表示不同的颜色)
ArcNode *firstnext; (指向第一个弧)
}shengfen[35];
三:详细设计
该程序一共包含三个模版:分别为初始化模版、着色模版和输出模版。
1.初始化模块
声明表示省份的顶点信息、省份之间相邻关系的弧的信息,并为其赋值。
2.着色模块
为各个省份着色。
for(i=1;i=34;i++)
{
sheng[i].color=0;
}
for(i=1;i=34;i++)
{
j=1;
p=sheng[i].firstnext;
while(p!=NULL)
{
while(p!=NULLj!=sheng[p-x].color)
{
p=p-next;
}
if(p!=NULL)
j++;
}
sheng[i].color=j;
}
3.输出模块
输出各个省份的颜色信息。
for(i=1;i=34;i++)
{
printf(%s:,sheng[i].name);
printf(%d\n,sheng[i].color);
}
printf(/n0表示白色,1表示蓝色,2表示红色,3表示绿色,4表示黄色);
return 0;
四:调试分析
因为我们的程序已知是中国地图,为中国地图染色,所以程序没有输入,只有输出信息。从输出的信息来看,我们最多使用了4种颜色。关于程序测试时存在的问题,我们程序在写完之后,出现了没有错误但是无法输出信息的问题,从网上查找发现是对警告没处理好的原因,随后我们参考了网上的解决方案把问题解决了。关于程序的改进,我们的程序使用的是有向图,但省份之间的相邻关系用无向图就可以表示,这是程序可以改进的地方。其次,我们的程序输出结果描述省份颜色的是数字,也可以改进后使之输出具体的颜色。
五:源程序清单
#include stdio.h
#include stdlib.h
typedef struct ArcNode{
int x;
struct ArcNode *next;
}ArcNode;
typedef struct{
char *name;
int color;
ArcNode *firstnext;
}shengfen[35];
int main()
{
shengfen sheng;
int i,j;
ArcNode *p,*hu1,*hu2,*hu3,*hu4,*hu5,*hu6,*hu7,*hu8,*hu9,*hu10,*hu11,*hu12,*hu13,*hu14,*hu15,*hu16,*hu17,*hu18;
ArcNode *hu19,*hu20,*hu21,*hu22,*hu23,*hu24,*hu25,*hu26,*hu27,*hu28,*hu29,*hu30,*hu31,*hu32,*hu33,*hu34,*hu35;
ArcNode *hu36,*hu37,*hu38,*hu39,*hu40,*hu41,*hu42,*hu43,*hu44,*hu45,*hu46,*hu47,*hu48,*hu49,*hu50
文档评论(0)