图的建立与操作.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图的建立与操作

图的建立与操作 /*在VC下运行 后缀为.cpp*/ #include stdio.h #include string.h #include stdlib.h #include ctype.h #include queue #include stack #include process.h using namespace std; #define MAX_VERTEX_NUM 20 #define MAX 1000 #define DG 1 #define DN 2 #define UDG 3 #define UDN 4 //typedef enum{DG,DN,UDG,UDN} GraphKind; typedef char VertexType; typedef int VRType; typedef char InfoType; struct Close { VertexType data;//顶点元素 VRType lowcost; int j; }closedge[MAX_VERTEX_NUM]; //prime算法秋最小生成树的辅助数组 typedef struct ArcNode{ int adjvex; //该弧所指向的顶点的位置 struct ArcNode *nextarc;//指向下一条弧的指针 int adj; //对于无权图为0 或1;对于带权图为权值 InfoType *info; //该弧相关信息的指针 }ArcNode,AdjMartrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//为简便起见邻接矩阵的元素类型,此时部分元素无用 typedef struct VNode{ int outdegree,indegree; VertexType data;//顶点信息 ArcNode *firstarc;//指向第一条依附该顶点的弧的指针 }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct Graph{ AdjList vertices; //邻接表 AdjMartrix arcs; //邻接矩阵 int vexnum,arcnum; // 顶点个数及边的数量 int kind; //图的类型 }ALGraph; int cmp(const void *a,const void *b) { if( *(char *)a-*(char *)b=0) return 1; return -1; } int LocateVex(ALGraph G, VertexType e ){ for(int i=1;i=G.vexnum;i++) if(G.vertices[i].data==e) return i; return 0; } void Input_V(AdjList ver,int n) { bool f=false; char str[30]; memset(str,0,sizeof(str)); printf(输入每个顶点:用字母数字 如 ABCDEF 表示六个顶点:); while(!fgets(str)){ int len=strlen(str); if(!len){ printf(\t\t你没有输入数据,请输入数据:); continue;} if(lenn){ printf(\t\t输入长度不够,请重新输入:); continue;} for(int i=0;in;i++) ver[i+1].data=str[i]; for( i=0;ilen;i++) if(!(str[i]=astr[i]=z||str[i]=Astr[i]=Z||str[i]=0str[i]=9)) break; if(ilen) { printf(\t\t输入非法字符,请重新输入:); continue;} qsort(str,len,sizeof(char),cmp); for(i=0;ilen-1;i++) if(str[i]==str[i+1]) break; if(ilen-1){ printf(\t\t不能有两个相同的字符,请重新输入:); continue;} f=true; memset(str,0,sizeof(str)); //puts(str); } } void initGraph( ALGraph G) // 初始化图 包括 输入顶点和弧的数目,并初

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档