图的基本操作算法_B5技术总结.docVIP

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
//图的基本操作算法 //1. void CreatGraph (AdjList g) //建立有n个顶点和m 条边的无向图的邻接表存储结构 { int n,m; scanf(%d%d,n,m); for(i =1,i=n;i++) //输入顶点信息,建立顶点向量 { scanf(g[i].vertex); g[i].firstarc=null; } for(k=1;k=m;k++) //输入边信息 { scanf(v1,v2); //输入两个顶点 i=GraphLocateVertex (g,v1); j=GraphLocateVertex (g,v2); //顶点定位 p=(ArcNode *)malloc(sizeof(ArcNode)); //申请边结点 p-adjvex=j; p-next=g[i].firstarc; g[i].firstarc=p; //将边结点链入 p=(ArcNode *)malloc(sizeof(ArcNode)); //无向图双向连接 p-adjvex=i; p-next=g[j].firstarc; g[j].firstarc=p; } }//算法CreatGraph结束 //2. void CreatAdjList(AdjList g) //建立有向图的邻接表存储结构 { int n; scanf(%d,n); for (i=1;i=n;j++) { scanf(g[i].vertex); g[i].firstarc=null; }//输入顶点信息 scanf(v1, v2); while(v1 v2) //题目要求两顶点之一为0表示结束 { i=GraphLocateVertex(g2,v1); p=(ArcNode*)malloc(sizeof(ArcNode)); //有向图 只需要单边 p-adjvex=j; p-next=g[i].firstarc; g[i].firstarc=p; scanf(v1,v2); } } //5. void InvertAdjList(AdjList gin,gout) //将有向图的出度邻接表改为按入度建立的逆邻接表 { for(i=1;i=n;i++) //设有向图有n个顶点,建逆邻接表的顶点向量。 { gin[i].vertex=gout[i].vertex; gin.firstarc=null; }//逆邻接表 顶点初始化 for(i=1;i=n;i++) //邻接表转为逆邻接表 { p=gout[i].firstarc; //取指向邻接表的指针 邻接表 头结点i的第一条边 while(p!=null) { j=p-adjvex; // 邻接表i,j边结点中的j顶点信息 s=(ArcNode *)malloc(sizeof(ArcNode)); //申请逆邻接表的边结点空间 s-adjvex=i; //对逆邻接表的j,i边结点 顶点信息赋值 s-next=gin[j].firstarc; //对逆邻接表的j,i边结点 下一边信息赋值 gin[j].firstarc=s; // j,i边结点链入逆邻接表 p=p-next; // 邻接表中找下一个邻接点。 }//while }//for } //6. void AdjListToAdjMatrix(AdjList gl, AdjMatrix gm) //将图的邻接表表示转换为邻接矩阵表示 { for(i=1;i=n;i++) //设图有n个顶点,邻接矩阵初始化。 for(j=1;j=n;j++) gm[i][j]=0; for(i=1;i=n;i++) { p=gl[i].firstarc; //取第一个邻接点。 while(p!=null) { gm[i][p-adjvex]=1; p=p-next; } //下一个邻接点 }//for }//算法结束 //7. void AdjMatrixToAdjList( AdjMatrix gm, AdjList gl ) //图的邻接矩阵表示法转换为邻接表表示法 { for(i=1;i=n;i++) //邻接表表头向量初始化。 { scanf(gl[i].vertex); gl[i].firstarc=null; } for(i=1;i=n;i++) for(j=1;j=n;j+

您可能关注的文档

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档