- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
采用连接表存储有向图设计算法判断任意两个顶点间是否存在路径
十一、采用连接表存储有向图,设计算法判断任意两个顶点间是否存在路径
#include stdio.h
#include stdlib.h
#include malloc.h
#define max 100 //顶点的最大个数
#define NULL 0
typedef struct st1{ //定义邻接表中结点类型
int adjvex; //邻接点的位置
struct st1 *nextarc; //指向下一个结点
char info; //边的信息
}Arcnode;
typedef struct{ //定义邻接表中头结点类型
char vexdata; //顶点信息
Arcnode *firstarc; //指向第一个邻接结点
}AdjList;
typedef struct{ //定义邻接表表头
AdjList vextices[max]; //存放表头结点信息
int vexnum,arcnum; //有向图的顶点数和边数
}AlGraph;
int visited[max]; //定义深度优先搜索遍历数组,0表示未被访问过,1表示已被访问过
int flag=0; //定义全局标志变量,用来确定两点间是否为通路,1表示存在,0表示不存在
/////////////////////////////////////////////////////////////////////建立邻接表
AlGraph *create_AdjListGraph(){
int n,e,i,j,k;
Arcnode *p;
AlGraph *al;
al=(AlGraph *)malloc(sizeof(AlGraph));
printf(请输入结点数:);
scanf(%d,n);
for(i=1;i=n;i++){ //初始化表头结点数组
al-vextices[i].vexdata=(char)i; //数据域存放顶点序号
al-vextices[i].firstarc=NULL;
}
printf(请输入边数:);
scanf(%d,e);
printf(请输入弧的信息:);
for(i=0;ie;i++){
scanf(%d%d,j,k); //依次读入弧的信息,结点k为结点j的邻接点
p=(Arcnode *)malloc(sizeof(Arcnode)); //申请结点空间,分配结点
p-adjvex=k;
p-info= ;
p-nextarc=al-vextices[j].firstarc;
al-vextices[j].firstarc=p;
}
al-vexnum=n;
al-arcnum=e;
return al;
}
//////////////////////////////////////////////////////////////输出邻接表
void print(AlGraph *alg){
int i;
Arcnode *p;
printf(图的邻接表为:\n);
for(i=1;i=alg-vexnum;i++){
printf(\t%d-,alg-vextices[i].vexdata);
p=alg-vextices[i].firstarc;
while(p!=NULL){
printf(%d-,p-adjvex);
p=p-nextarc;
}
printf(\n); //符号“”表示空结点
}
}
///////////////////////////////////////////////////////////释放邻接表结点空间
void FreeAlGraph(AlGraph *alg){
int i;
Arcnode *p,*q;
for(i=0;i=alg-vexnum;i++){
p=alg-vextices[i].firstarc;
while(p!=NULL){
q=p-nextarc;
free(p);
p=q;
}
}
}
////////////////////////////////////////////////////深度优先搜索遍历算法
int dfs(AlGraph *alg,int i,int
您可能关注的文档
最近下载
- 《新时代职业英语》教学资源_传媒英语_Unit_6_.pptx VIP
- 中医临床执业医师考试题及答案2025版.docx VIP
- 超声中信号处理.ppt VIP
- 《新时代职业英语》教学资源_传媒英语_Unit_7_.pptx VIP
- 部编人教版道德与法治五年级上册《全册课件》.pptx
- 《新时代职业英语》教学资源_传媒英语_Unit_9.pptx VIP
- 宝钢质量管理经验.doc VIP
- 勿忘历史,珍爱和平——抗战胜利80周年主题班会-2025-2026学年初中主题班会优质课件.pptx VIP
- Kuka控制系统 KR C5安装指南.pdf VIP
- 学习2025年《初中初三开学第一课》.pptx VIP
文档评论(0)