数据结构知识点总结有工大老师多经验编写.pptVIP

数据结构知识点总结有工大老师多经验编写.ppt

  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文档。上传文档
查看更多
计算机系列课程之间的联系 数据结构涵盖的内容 二.基本概念和术语 1.1.2四种基本的数据结构 1.集合结构 3.树型结构 1.1.3数据结构的研究对象 数据结构的研究对象(研究内容) 先广搜索定义——类似于树的层次遍历 设图G的初态是所有顶点均未访问过“new“,在G中任选一顶点v为源点,则先广搜索可定义如下: 1)首访问出发点 v ; 2)接着依次访问所有与 v 相邻的顶点w1,w2……wt; 3)然后在依次访问与w1,w2… wt相邻的所有未访问的顶 点; 4)依次类推,直至图中所有与源点v有路相通的顶点都已访问过为止; 5)此时,从 v 开始的搜索结束,若G是连通的,则遍历完成;否则在G中另选一个尚未访问的顶点作为新源点,继续上述搜索过程,直到G中的所有顶点均已访问为止。 3 7 A C D E G B F I H 1 2 4 5 6 8 9 A C D E G B F I H A C D E G B F H I 3 7 1 2 4 5 6 8 9 先广搜索示例 先广搜索过程 先广搜索结果——先广生成树 先广搜索特点:尽可能横向上进行搜索,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,故称先广搜索或广度优先搜索。 先广搜索过程中,根据访问顺序给顶点进行的编号,称为先广编号。 先广搜索过程中,根据访问顺序得到的顶点序列,称为先广序列或BFS序列。 先广搜索结果不唯一,即图的BFS序列和先广编号不唯一。 如何保证先访问的顶点其邻接点亦先访问—先进先出原则 设x和y是两个相继被访问的顶点,它们的邻接点分别记为x1,x2…xs,和y1,y2…yt。因为x先于y被访问,故访问x1,x2,…xs中未访问的顶点必先于y1,y2…yt中的未访问者。为了确保这种先访问的顶点其邻接点亦先被访问的先进先出原则,可以使用队列来保存已访问的顶点(或者保存尚未访问的顶点?). 先广搜索算法(算法5.2) 输入:L [ v ]表示无向图G的关于v的邻接表 输出:每个结点有先广编号的无向图G和树边集 T void bsearch ( v ) { MakeNull ( Q ) ; bfn[ v ] = count ; /*先广编号* / count = count + 1 ; mark v “old”; EnQueue ( v , Q ) ; /*v入队*/ while ( !Empty( Q ) ) { v = Front ( Q ) ; DeQueue ( Q ) ; for ( each w∈L[ v ] ) if (w is marked “new”){ bfn[ w ] = count ; count = count + 1 ; /*先广编号*/ mark w “old” ; EnQueue( w , Q ) ; Insert( (v , w ) , T ) ; /*树边入T*/ } } } void BFS1 (AdjGraph *G, int k)//这里没有进行先广编号 { int i; EdgeNode *p; Queue Q; MakeNull(Q); cout G→vexlist[ k ] .vertex; visited[ k ] = TRUE; EnQueue (k, Q); //进队列 while ( ! Empty (Q) ) { //队空搜索结束 i=DeQueue(Q); //vi出队 p =G→vexlist[ i ].firstedge; //取vi的边表头指针 while ( p ) { //若vi的邻接点 vj (j= p→adjvex)存在,依次搜索 if ( !visited[ p→adjvex ]) { //若vj未访问过 cout G→vexlist[ p→adjvex ].vertex;//访问vj visited[ p→adjvex ]=TRUE; //给vj作访问过标记 EnQueue ( p→adjvex , Q ); //访问过的vj入队

文档评论(0)

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

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

1亿VIP精品文档

相关文档