DS习题答案02.doc

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

第七章 集合与搜索树 1.第137页,第(5), 建立37,45,91,25,14,76,56,65为输入时的二叉搜索树,再从该树上依此删除76,45,则树形分别如何? 第137页,第(6) 试写一个判定任意给定的二叉树是否二叉搜索树算法。 int k=-?; bool fail=false; template class T void BTreeT::IsBiTree(BTNodeT *p,int k,bool fail) { if (p !fail){ IsBiTree(p-lchild,k,fail); if(k p-element) k=p-element; else fail=true; IsBiTree(p-rchild,k,fail); } } 第137页,第(8) 以下列序列为输入,从空树开始构造AVL搜索树。 (1)A,Z,B,Y,C,X (2)A,V,L,T,R,E,I,S,O,K 第137页,第(12) 5阶B-树的高度为2时,树中元素个数最少为多少? 答: 5 第137页,第(13)题 从空树开始,以关键字序列:a,g,f,b,k,d,h,m,j,e,s,i,r,x ,建立 (1) 4阶B-树; (2) 5阶B-树。 4阶B-树 (2) 5阶B-树 第137页,第(14)题 从上题的4阶B-树上依次删除a,e,f,h。 第八章 散列与跳表 第154页,第(3)题 设散列表ht[11],散列函数h(key)=key % 11。采用线性探查法解决冲突,试用关键字值序 列:70,25,80,35,60,45,50,55 建立散列表。 第154页,第(6)题 给出用拉链方法解决冲突的散列表搜索操作的C++函数实现。 templateclass T bool LinkedHashTableT ::Search(const K k,Ee)const { int i=k % M,j; HNodeT* p=ht[i];//元素结点类型HnodeT while (p){ if(p-element==k)return true; p=p-nextsynonym; } return false; } 第154页,第(3)题 设散列表ht[11],散列函数h(key)=key % 11。采用二次探查法解决冲突,试用关键字值 序列:70,25,80,35,60,45,50,55 建立散列表。 第154页,第(4)题 对上题的例子,若采用双散列法,试以散列函数h1(key)=key % 11,h2(key)= key % 9+1 建立散列表。 第九章 图 第188页,第(1)题 对下面的有向图求 (1) 每个顶点的入度和出度; (2) 强连通分量 (3) 邻接矩阵 第188页,第(2)题 当以边〈1,0〉,〈1,3〉,〈2,1〉,〈2,4〉,〈3,2〉,〈3,4〉,〈4,0〉,〈4,1〉,〈4,5〉, 〈5,0〉的次序从只有6个顶点没有边的图开始,通过依此插入这些边,建立邻接表结构。 画出该邻接表。 第188页,第(4)题 已知有向图的邻接表,试写出计算各顶点的入度的算法。 templateclass T void LinkedGraphT ::Degree() { int *d=new int[n];int i; ENodeT* p; for ( i=0;in;i++) d[i]=0; for ( i=0;in;i++){ p=a[i]; while (p){ d[p-adjvex]++; p=p-nextarc; } } for ( i=0;in;i++) coutd[i]=d[i]; } 第188页,第(6)题 在题2所建立的邻接表上进行以顶点2为起始顶点的深度优先搜索和广度优先搜索。分别 画出遍历所得到的深度优先搜索和广度优先搜索的生成森林(或生成树)。 第188页,第(8)题 分别设计算法,在邻接矩阵上实现有向图的深度优先搜索. templateclass T void MGraphT ::DFS(int v,bool visited[]) { visited[v]=true; cout v; for ( int j=0;jn;j++) if (a[v][j]!visited[j]) DFS(j,visited); } 第188页,第(10)题 设

文档评论(0)

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

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

1亿VIP精品文档

相关文档