图的邻接表存储表存储表示(国外英语资料).doc

图的邻接表存储表存储表示(国外英语资料).doc

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

图的邻接表存储表存储表示(国外英语资料) Adjacency list storage //------------------ map that C #includestdio.h #includemalloc.h #includestring.h #define OK 1 #define ERROR 0 Typedef int Status; #define MAX_VERTEX_NUM 20 #define MAX_NAME 3 Typedef int InfoType; Typedef char VertexType[MAX_NAME]; Typedef enum{DG, DN, UDG, UDN}GraphKind; //{directed graph, directed, undirected graph, undirected network} Typedef struct ArcNode { Int adjvex; Struct ArcNode *nextarc; InfoType *info; / / pointer to the arc of relevant information }ArcNode; Typedef struct VNode { VertexType data; ArcNode *firstarc; }VNode, AdjList[MAX_VERTEX_NUM]; Typedef struct { AdjList vertices; Int, vexnum, arcnum; Int kind; }ALGraph; For the vertices in the graph / position Int LocateVex (ALGraph, G, VertexType, U) { Int i; For (i=0; iG.vexnum; i++) If (StrCmp (U, G.vertices[i].data) ==0) Return i; Return -1; } / / Map Status CreateGraph (ALGraph *G) { Int, I, J, K, w; VertexType, V1, v2; ArcNode *p; Printf (enter the type of graph (digraph: 0, directed network: 1, undirected graph: 2, undirected network: 3).); Scanf (%d, (*G).Kind); Printf (enter the number of vertices and the number of edges:); Scanf (%d,%d, (*G).Vexnum, (*G).Arcnum; Printf (enter the value of%d vertices (maximum%d characters): \n, (*G).Vexnum, MAX_NAME); For (i=0; i (*G).Vexnum; ++i) { Scanf (%s, (*G).Vertices[i].data); (*G).Vertices[i].firstarc=NULL; } If ((*G).Kind==1|| (*G).Kind==3) Printf (enter the value of each edge + arc end + arc head: \n); Else Printf (enter the arc end of each edge + arc head: \n); For (k=0; k (*G).Arcnum; ++k) { If ((*G).Kind==1|| (*G).Kind==3) Scanf (%d%s%s, w, V1, V2); Else Scanf (%s%s, V1, V2); I=LocateVex (*G, V1); J=LocateVex (*G, V2); P= (ArcNode*) malloc (sizeof (ArcNode)); P-adjvex=j; If ((*G).Kind==1|| (*G).Kind==3) { P-info= (int *) malloc (sizeof (int)); * (p-info) =w; } Else P-info=NULL; P-nextarc= (*G).Vertices[i].firstarc; (*G).Vertices[i].firstarc=p; If ((*G).Kind=2) { P= (ArcNode*) malloc (sizeof (ArcNo

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档