- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图的应用(附代码)
一、【实验构思(Conceive)】(10%)
(本部分)Design)】(20%)
(本部分)
三、【实现描述(Implement)】(30%)
(本部分Testing)】(10%)
(本部分)
(本部分)(本部分)#includestdio.h
#includestring.h
#define MAXV 20
#define MAXSIZE 20
#define MAXLEN 500
#define INF 32767/*用32767表示∞*/
int a=0;
typedef struct
{int num;
char name[MAXSIZE];
char content[MAXLEN];
}VertexType;
typedef struct
{int edges[MAXV][MAXV];
int vexnum,arcnum;
VertexType vexs[MAXV];
}MGraph;
int visited[MAXV];
int p[MAXV];
void path(MGraph g,int i,int j,int k)
/*确定路径上第k+1个顶点的序号*/
{int s;
if(p[k]==j)/*找到一条路径*/
{
a++;/*路径的条数值加1*/
printf(第%d条:\n,a);
for(s=0;s=k-1;s++)/*输出一条路径*/
printf(%s-,g.vexs[p[s]].name);
printf(\n);
}
s=0;
while(sg.vexnum)
{if(s!=i)/*保证找到的是简单路径*/
{if(g.edges[p[k]][s]!=INFvisited[s]==0)
/*当vk与vs之间有边存在且vs未被访问过*/
{visited[s]=1;/*置访问标志位为1,即已访问的*/
p[k+1]=s;/*将顶点s加入到p数组中*/
path(g,i,j,k+1);
visited[s]=0;/*重置访问标志位为0,以便该顶点能被重新使用*/
}}
s++;
}
}
void disppath(MGraph g,int i,int j)
{int k;
p[0]=i;
for(k=0;kg.vexnum;k++)
visited[i]=0;/*初始化各顶点的访问标志位*/
a=0;/*初始化路径的条数*/
path(g,i,j,0);/*通过调用path函数,找到从vi到vj的所有路径并输出*/
}
void ppath(MGraph g,int path1[],int i,int v0)
{int k;
k=path1[i];
if(k==v0)/*找到最短路径,则返回*/
return;
ppath(g,path1,k,v0);/*否则,递归调用之*/
printf(%s-,g.vexs[k].name);/*依次输出路径中的景点名称*/
}
void dispath(MGraph g,int dist[],int path1[],int s[],int n,int v0,int i)
{
if(s[i]==1i!=v0)
/*当v0不等于i,且i∈s*/
{printf(从%s到%s的最短游览路径是:\n,g.vexs[v0].name,g.vexs[i].name);
printf(%s-,g.vexs[v0].name);
ppath(g,path1,i,v0);/*调用ppath函数,输出路径中的顶点*/
printf(%s ,g.vexs[i].name);
printf(路径长度:%d米\n,dist[i]);
}
}
void Dijkstra(MGraph g,int v0,int p)
{
int dist[MAXV],path1[MAXV];
int s[MAXV];
int mindis,i,j,u,n=g.vexnum;
for(i=0;in;i++)
{dist[i]=g.edges[v0][i];/*距离初始化*/
s[i]=0;/*s[]置空*/
if(g.edges[v0][i]INF)/*路径初始化*/
path1[i]=v0;
else
path1[i]=-1;
}
s[v0]=1;path1[v0]=0;/*源点编号v0放入s中*/
for(i=0;in;i++)
{mindis=INF;
u=-1;
for(j=0;jn;j++)/*选取不在s中具有最小距离的顶点u*/
if(s[j]==0dist[j]mindis)
{u=j;
您可能关注的文档
- 双沟中学党支部党建工作制度05.doc
- 监测监控管理办法.doc
- 超高-道路几何设计.ppt
- 两岸文化交流(蔡承铭).ppt
- 4.2 AP1000技术交流会-供应范围.ppt
- 第14课 电脑美术——版画效果的图画 教学设计1.doc
- 营业人员职业化训练.ppt
- 2011年上半年服务业发展情况分析.doc
- 禁烟作文.doc
- cisco ios 升级.doc
- 浙江省临海市白云高级中学2025届高三历史3月月考试题.doc
- 云南拾谷县第一中学2024_2025学年高二物理上学期10月月考试题.doc
- 2025版高考生物总复习第13讲基因的分离定律教案苏教版.doc
- 湖北省黄石实验高中2024_2025学年高一历史下学期期末考试模拟卷.doc
- 通史版2025版高考历史大一轮复习专题七近代化的曲折发展__中日甲午战争至五四运动前4第4讲从维新思想到新文化运动课后达标检测含解析新人教版.doc
- 2024年高考数学考试大纲解读专题04导数及其应用含解析文.doc
- 河南省许汝平九校联盟2024_2025学年高一语文上学期期末考试试题扫描版无答案.doc
- 江西省吉安市吉水县第二中学2024_2025学年高一历史上学期第二次月考试题.doc
- 北京市平谷区2025届高三政治一模考试试题含解析.doc
- 2025届中考物理第四讲物态变化专项复习测试无答案新人教版.docx
文档评论(0)