第6次课图1浅析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6次课 图(1);图的考点;图的考点;题目1;一、图的存储结构;例1;1.邻接矩阵 (2)对无(有)向网,即带权图 ;课堂测试; 2.邻接表 ;邻接点链表的结点结构 (1)普通有(无)向图 (2)带权有(无)向图—网 说明: adjvex域—存放邻接点在表头数组中的下标。 weight域—存放边(顶点,邻接点)的权值 next域—存放指向表头顶点的下一个邻接点的指针 ;例1;带权有(无)向图—网;课堂练习;二、图的遍历;V1; 设图的邻接矩阵存储结构如下:;课堂练习;; ;typedef int VertexType; /*表头顶点*/ typedef struct v_node { VertexType vertex; /*存放顶点信息*/ E_NODE *firstarc; /*指示第一个邻接点*/ } V_NODE; typedef struct { V_NODE verx[MAXVER]; /*顶点数组类型*/ int vernum; int arcnum; }adjlist;; int visited[MAXVER] = {0}; /* 访问标识数组初始化*/ void DFSTraverse(adjlist G) {/* 对以邻接表表示的连通图G作深度优先遍历*/    int v,   printf(“Please select the original vertex:”); scanf(“%d”, v); DFS(G, v);/*从编号为v的结点开始进行深度优先搜索*/  } void DFS(adjlist G, int v)  { int w;  E_NODE *p; /* p 为指向弧结点的指针*/   printf(“%d”,G.verx[v-1].vertex);  /* 访问第 i 个顶点*/   visited[v-1] = 1;       /* 设访问标志*/   for ( p=G.verx[ v-1 ].firstarc; p; p=p-next )   { w = p-adjvex+1; /* 找到v的邻接点w*/    if (!visited[w-1]) DFS(G, w);    }  };课堂练习;2.广度优先搜索(BFS)遍历;对于非连通图,若上述操作后,图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止。 ; 设图的邻接矩阵存储结构如下:;;BFS算法实现; printf(“Please select the original vertex:”); scanf(“%d”, v); /*从顶点v出发进行广度优先搜索*/ ? printf(“%d”,G.verx[v-1].vertex); /*访问图中第 v 个顶点*/ visited[v-1] = 1; enqueue (Q, v);     /* v 入队列*/ while (! emptyqueue(Q)) { outqueue (Q, v);  /*队头元素出队???置为 v*/   for (p = G.verx[v-1].firstarc; p; p=p-next ) { w = p-adjvex+1;    if ( ! visited[w-1] ) { visited[w-1] = 1; printf(“%d”,G.verx[w-1 ].vertex);/* 访问图中第 w 个顶点*/    enqueue(Q, w);/* 当前访问的顶点 w 入队列 Q*/    } /*end if*/ }/*end for*/ } /*end while*/ ;课堂练习;三、生成树;V1;V1;课堂练习

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档