图论实验代码汇编.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图论实验代码汇编

图论实验报告(代码) 姓名:肖尧 1.写一个程序,输入一个图,一对顶点和通路长度,输出两个顶点间 指定长度的通路。 程序代码: #includestdlib.h #includestdio.h #includeiostream using namespace std; #define MAX 20 typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc; }ArcNode; typedef struct VNode{ char data; ArcNode *firstarc; }VNode,AdjList[MAX]; typedef struct{ AdjList vertices; int n,e; }MGraph; int path[MAX]; int visited[MAX]; //返回字符 v 在图中的位置 int LocateVex(MGraph G, char v) { int i; for(i=0;iG.n;i++) { if(G.vertices[i].data==v) {return i;break;} } return -1; } //得到顶点 Vi char GetValue(MGraph G,int i) 1 { return (i=0 iG.n) ? G.vertices[i].data : NULL; } //判断字符 m 是否在图中 int IsIn(MGraph G,char m) { int p; for(p=0;pG.n;p++) { if(G.vertices[p].data==m) return p; } return -1; } //创建图 void CreatGraph(MGraph G) { int i,k; char m,n; ArcNode *s; cout请输入顶点数和边数 : ; cinG.nG.e; coutendl; while(G.n20) { cout输入的数字不符合要求,请重新输入 : ; cinG.nG.e; } while(G.e((G.n-1)*G.n/2)) { cout输入的数字不符合要求,请重新输入 : ; cinG.e; } cout请输入各顶点的名称 : ; //建立顶点表 for(i=0;iG.n;i++) { cinG.vertices[i].data; G.vertices[i].firstarc=NULL;//初始化图 } coutendl; //输入边 for(k=0;kG.e;k++) 2 { int a,b,p,q; cout请输入有边的 2 个顶点 : ; cinmn; coutendl; p=IsIn(G,m); q=IsIn(G,n); while(p==-1||q==-1) { cout输入的数字不符合要求,请重新输入: ; cinmn; p=IsIn(G,m); q=IsIn(G,n); } a=LocateVex(G, m); b=LocateVex(G, n); //生成边表结点 s=(ArcNode*)malloc(sizeof(ArcNode)); s-adjvex=a; s-nextarc= G.vertices[b].firstarc; //将顶点 m 插入到顶点 n 之后 G.vertices[b].firstarc=s; s=(ArcNode*)malloc(sizeof(ArcNode)); s-adjvex=b; s-nextarc= G.vertices[a].firstarc; //将顶点 n 插入到顶点 m 之后 G.vertices[a].firstarc=s; } } //k 是要判断的长度,x,y 为给定的两个点的地址 int Search(MGraph G,int x,int y,int k,int visited[],int path[],int d) { int n,i; ArcNode *p; visited[x]=1; d++; path[d]=x; if(x==y d==k) return 1; p=G.vertices[x].firstarc; while(p !=NULL) { n=p-adjvex; 3 if(visited[n]==0) { if((i=Search(G,n,y,k,visited,path,d))==1) return i;

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档