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

第7章 图 建立邻接表: void CreatALGraph(ALGraph *G) { int i,j,k; EdgeNode *e; printf(“输入顶点数和边数:\n”); scanf(“%d,%d”,G-vexnum,G-edgenum); for(i=0;iG-vexnum;i++) //读入顶点信息,建立顶点表 { scanf(“%c”,G-adjList[i].data); G-adjList[i].firstedge=NULL; //将边表置为空表 } //建立边表 for(k=0;kG-edgenum;k++) { printf(“输入边(vi,vj)上顶点序号:\n”); scanf(“%d,%d”,i,j); e=(EdgeNode *)malloc(sizeof(EdgeNode)); //申请空间,生成边表结点 e-adjvex=j; //邻接序号为j e-next=G-adjList[i].firstedge; G-adjList[i].fistedge=e; e=(EdgeNode *)malloc(sizeof(EdgeNode)); e-adjvex=i; //邻接序号为i e-next=G-adjList[j].firstedge; G-adjList[i].fistedge=e; } } //接上页 算法的时间复杂度? O(n+e) 【邻接表的问题】--对于有向图而言 【解决办法】使用十字链表 出度易找,入度需遍历整个图 入度易找,出度需遍历整个图 顶点的结点结构 顶点信息数据 指向该顶点的第一条入弧 指向该顶点的第一条出弧 3、十字链表(教材P164-165) 弧的结点结构 弧尾顶点位置 弧头顶点位置 指向下一个有相同弧尾的结点 指向下一个有相同弧头的结点 firstedge data next adjvex A B C D A B C D 1 0 2 0 0 2 3 2 0 3 1 3 2 3 0 1 2 3 【邻接表的问题】--对于无向图而言 【解决办法】使用邻接多重表 对边的处理能力弱,例如要删除一条边,需要到两个边表中进行操作 4、邻接多重表(教材P166-167) 顶点的结点结构 firstedge data 边的结点结构 (与邻接表相同) next adjvex E D C B A 0 1 2 3 4 A B C D E 1 0 3 0 1 2 3 2 4 2 1 4 小结:图常用的存储结构 邻接矩阵、邻接表、十字链表、邻接多重表 机场很多,直达航线很少,那么这个航空系统该设计成邻接矩阵还是邻接表呢?好纠结啊,求高手解答。 (教材P167)从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次的过程。 通常有两种遍历方案:深度优先遍历、广度优先遍历 三、图的遍历 图的术语(教材P159) 路径、路径长度 图G=(V,{VR})中从顶点u到顶点w的路径(Path)是一个顶点序列(u=vi,0,vi,1,…vi,m=w),其中 (vi,j-1,vi,j)?VR ,1≤j≤m。 顶点B到顶点D的四种不同路径 路径长度:路径上边的数目 2 3 简单路径:序列中顶点不重复出现的路径。 简单回路:序列中第一个顶点和最后一个顶点相同的路径。 简单路径、简单回路 * YL-2011 * 安卓手机锁屏图案 ? ? ? ? ? ? 一、图的定义和术语 二、图的存储表示 三、图的遍历 四、图的连通性问题(最小生成树) 五、最短路径 六、有向图的应用(拓扑排序、关键路径) 主要内容 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为G(V,E)。 其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 一、图的定义和术语 1、图的定义 教材P157 顶点(Vertex):数据元素 在图中,任意两个顶点之间都可能存在关系,顶点之间的逻辑关系用边(edge)来表示,边集可以为空。 2、图的术语(教材P157-158) 无向边 有向边(弧) 例如:v,w表示从 v 到 w 的一条弧,并称 v 为弧尾,w 为弧头。 V W 若顶点vi到vj之间的边没有方向,则称这条边为无向边,用无序偶对(vi,vj)来表示。 若顶点vi到vj之间的边有方向,则称这条边为有向边,

文档评论(0)

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

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

1亿VIP精品文档

相关文档