- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构B复习要点
基础知识
1、算法与数据结构数据抽象和抽象数据类型算法分析的基本方法][0] [0]在内存中的地址是L,按行主序,A[2][3][4]的地址是 。
二、选择题(10分,每题2分)
1、具有n 个顶点的有向完全图中,边的总数为( )条。
A)n(n+1) B)n(n-1)
C)n(n-1)/2 D)n(n+1)/2
2、设一个栈输入序列是1、2、3、4、5,则下列序列中不可能是栈的输出序列是( )。
A)32541 B)15432
C)14523 D)23145
3、二叉树的前序遍历为EFHIGJK,中序遍历序列为HFIEJKG。该二叉树根结点的右子树的根是( )
A) E B) F
C) G D) H
4、对有14个元素的有序表A[1]-A[14]作对半查找,查找元素A[4]时的被比较元素依次为()
A. A[1],A[2],A[3],A[4] B.A[7],A[3],A[5],A[4]
C. A[1],A[2],A[7],A[4] D.A[7],[A5],A[3],A[4]
5、设有一个长度为100且已排好序的表,用对半搜索进行查找,若搜索不成功,则至少要比较______次。 ( )
A.9 B.8 C.7 D.6
三、简答题(20分,每题5分)
1、用一维数组存放的一棵完全二叉树如图所示:
图
写出前序、中序、后序遍历该二叉树时访问结点的顺序。
2、图的邻接表表示一个给定的无向图。
(1)给出从顶点v1开始,用深度优先搜索法进行遍历时的顶点序列;
(2)给出从顶点v1开始,用广度优先搜索法进行遍历时的顶点序列。
四、解答题(32分,每题8分)
1、设数据集合d={1,12,5,8,3,10,7,13,9},试完成下列各题:
(1)依次取d中各数据,构造一棵二叉搜索树bt。
(2)画出在二叉树bt中删除12后的树结构。
2、对图的3阶B-树,依次执行下列操作,画出各步操作的结果。
(1)插入90 ;(2)插入25;(3)插入45;(4)删除60;
图
五、程序阅读题(10分)
图采用邻接表存储表示,边结点的结构如图所示,下面的程序是邻接表类LinkedGraph的某个成员函数
template class T
void LinkedGraphT::A()
{
int *in=new int[n];
for (int i=0;in;i++) in[i]=0;
ENodeT *p;
for (i=0;in;i++)
{ p=a[i];
while (p)
{ in[p-adjvex]++;
p=p-nextarc;
}
}
coutendl;
for (i=0;in;i++) couti: in[i];endl;
delete []in;
}
⑴ 请说明该成员函数的作用是什么?
⑵ 若有一个邻接表如图8所示,请给出执行该函数的结果?
六、算法设计题(10分)
1、在以二叉链表表示的二叉树类BinaryTree中增加一个成员函数LeavesInTree( )。该模板函数为递归函数,其功能是求二叉树类BinaryTree的对象中叶子结点的数目。实现该递归函数。函数原型如下:
template class T
int BinaryTreeT::LeavesInTree( )
参考答案:
template class T
int BinaryTreeT::LeavesInTree( )
{
return Leaf(root);
}
template class T
int BinaryTreeT::Leaf(BTNodeT *t)
{
if (t == NULL) return 0;
if ((t-lChild == NULL)(t-rChild == NULL)) return 1;
return Leaf(t-lChild) + Leaf(t-rChild);
}
2、输入n个数据。设计一个时间复杂度为O(n)的算法,删除表中所有数值
文档评论(0)