4、数据结构_图.ppt

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

实例: 无向图 G2 1 2 3 4 5 1 2 3 4 有向图 G1 adj 0 1 2 3 2 ^ 1 3 4 2 3 ^ 1 ^ 4 ^ adj 0 1 2 3 4 2 1 3 4 5 2 1 1 4 5 ^ 2 3 5 ^ 5 ^ 2 3 ^ 4 ^ 逆邻接表——对有向图而言 1 2 3 4 有向图 G1 0 1 2 3 2 1 3 4 4 3 ^ 3 ^ 1 ^ adj 1 ^ 有向图邻接表建立 void CreateGraph(AdjList *adj) { VertexData v, u; int Vnum, Unum; ArcNode2 *q = NULL; printf(输入顶点数和边数(例:6,10):\n); scanf_s(%d,%d,adj-vexnum2,adj-arcnum2);//输入顶点数和边数。 //初始化表头结点 int i; for (i = 0; i adj-vexnum2; i++) { getchar(); cout 输入第 i+1 个结点的顶点名称 endl; cin adj-vertex[i].data;//顶点名称,是一个字符 adj-vertex[i].firstarc = NULL; } for (i = 0; i adj-arcnum2; i++) { getchar(); cout 输入第 i+1 条边的起点和终点 endl; //scanf_s(%c%c,v,u);//输入边的起始和终止 cin v u; Vnum = LocateVertex2(adj, v); Unum = LocateVertex2(adj, u); if (Vnum == -1 || Unum == -1) { printf(error!!!); return; } //有向图 q = (ArcNode2 *)malloc(sizeof(ArcNode2));//创建一个表结点 if (q == NULL) return; q-adjvex = Unum; q-nextarc = adj-vertex[Vnum].firstarc;//新加入的节点都是在头结点之后,原来在头结点之后的节点要后移。 adj-vertex[Vnum].firstarc = q; } } //求顶点位置函数--邻接表 int LocateVertex2(AdjList *G2, VertexData v) { int k, j = Error; for (k = 0; kG2-vexnum2; k++) if (G2-vertex[k].data == v) { j = k; break; } return(j); } void main() { AdjList adj; adj.kind2 = DN; CreateGraph(adj); } /*..............邻接表_存储结构................ */ typedef struct ArcNode2 { int adjvex; //该弧指向顶点的位置 struct ArcNode2 *nextarc;//指向下一条弧的指针 } ArcNode2; typedef struct VertexNode { VertexData data; //顶点数据 ArcNode2 *firstarc; //指向该顶点第一条弧的指针 }VertexNode; //基于邻接表的图 typedef struct { VertexNode vertex[N]; int vexnum2, arcnum2; //图的顶点数和弧数 GraphKind kind2; //图的种类标志 }AdjList; /*...............................................*/ #include iostream using namespace std; #include stdlib.h #include stdio.h #define N 20 #define True 1 #define False 0 #define Error -1 #define Ok 1 //图的种类:DG表示有向图, DN表示有向网, UDG表示无向图, UDN表示无向网 typedef enum{ DG, DN,

文档评论(0)

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

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

1亿VIP精品文档

相关文档