云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构小课堂(6.7讲师版)

数据结构小课堂(6.7讲师版)

  • 62 次阅读
  • 3 次下载
  • 2025/12/3 9:26:09

? 考试形式:

? 选择:小知识点

? 填空:小的知识点以及相关重点算法的代码填空 ? 简答(40分):不用编程(画出构造一个堆的流程、构造一棵哈夫曼编码树。。。) ? 编程(30分):需要编程实现(逆序一个链表)

? 现学的数据结构:

? 顺序表 ? 栈 ? 队列

? 二叉树(二叉搜索树) ? 堆 ? 要求掌握:

? 定义

? 编程实现(数组,链表) ? 应用

一、 单选:

1.以下数据结构中哪一个是非线性结构?( D )

A、队列 B、栈 C、线性表 D、二叉树

2. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10)。每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。( C)

A、688 B、678 C、692 D、696

3.二叉树的第K层的结点数最多为( D ).

kKK-1k-1

A、2-1 B、2+1 C、2 +1 D、 2

4. 设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为(A)。

A、 BADC B、BCDA C、 CDAB D、CBDA

5.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( B )个空指针域。 A、 2m-1 B、 2m C、 2m+1 D、 4m 6. 设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( C )。 A、 R-F B、 F-R C、(R-F+M)%M D、(F-R+M)%M 7.下面程序的时间复杂为(B)

for(i=1,s=0;i<=n;i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}

234

A、 O(n) B、 O(n) C、 O(n) D、 O(n)

8.设二叉排序树中有n个结点,则在二叉排序树的平均平均查找长度为(B )。

2

A、 O(1) B、 O(log2n) C、O(n) D、 O(n)

9.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为( C )。

2

A、 O(n) B、 O(nlog2n) C、 O(1) D、 O(n)

10.设一组权值集合W={2,3,4,5,6},则由该权值集合构造的哈夫曼树中带权路径长

度之和为( D )。

A、20 B、 30 C、40 D、 45

二、填空:

1. 后缀算式9 2 3 +- 10 2 / -的值为(-1)。中缀算式(3+4X)-2Y/3对应的后缀算式为

(3 4 X * + 2 Y * 3 / -)。

2. 若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指

针。在这种存储结构中,n个结点的二叉树共有(2n)个指针域,其中有(n-1)个指针域是存放了地址,有( n+1)个指针是空指针。

3. 在堆排序的过程中,对任一分支结点进行筛选运算的时间复杂度为( O(log2n)),整个

堆排序过程的时间复杂度为( O(nlog2n))。

4. 数据的物理结构主要包括(顺序存储结构)和(链式存储结构)两种情况。

5. 设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为

( p>llink->rlink=p->rlink; p->rlink->llink=p->rlink)(设结点中的两个指针域分别为llink和rlink)。

6. 深度为k的完全二叉树中最少有(2k-1)个结点。

7. 设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线

上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与A[0][0]之间有(i(i+1)/2+j-1)个数据元素。 8. 补充二分查找代码:

templateintorderedList:: BinarySearch( const Type &x ) const { //折半搜索的迭代算法

inthigh = , low = 0, mid; while ( ) {

mid = ( low + high ) / 2; if ( Element[mid].getKey ( )

else if ( Element[mid].getKey ( ) > x ) ;

else return mid; } return -1; }

9. 下面程序段的功能实现数据x进栈,要求在括号处填上正确的语句。

typedefstruct {int s[100]; int top;} sqstack; void push(sqstack&stack,int x) {

if (stack.top==m-1) printf(“overflow”);

else {(stack.s[stack.top]=x);(stack.top++) ;}

}

10.template void BinaryTree:: PreOrder( BinTreeNode *current ) { if ( current != NULL ) { cout<

PreOrder( current→leftChild ); PreOrder( current→rightChild ); } }

三、简答题

1.已知二叉树的前序遍历序列是AEFBGCDHIKJ,中序遍历序列是EFAGBCHKIJD,画出此二叉树,并画出它的后序线索二叉树。

参考答案:

AEFNULLDHFKJGBC 2.下图所示的森林:

(1)求树(a)的先根序列和后根序列; (2) 求森林先序序列和中序序列; (3)将此森林转换为相应的二叉树;

ABD(a)参考答案:

GCEFIHJ(b)K

(1) ABCDEF; BDEFCA;(2) ABCDEFGHIJK; BDEFCAIJKHG(3)转换为相应的二叉树

ABCDEFIJKHG

3.设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二叉排序树并给 出构造过程。 参考答案:

45 45 45 45 45

80 80 40 80 40 80

48 48 48

搜索更多关于: 数据结构小课堂(6.7讲师版) 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

? 考试形式: ? 选择:小知识点 ? 填空:小的知识点以及相关重点算法的代码填空 ? 简答(40分):不用编程(画出构造一个堆的流程、构造一棵哈夫曼编码树。。。) ? 编程(30分):需要编程实现(逆序一个链表) ? 现学的数据结构: ? 顺序表 ? 栈 ? 队列 ? 二叉树(二叉搜索树) ? 堆 ? 要求掌握: ? 定义 ? 编程实现(数组,链表) ? 应用 一、 单选: 1.以下数据结构中哪一个是非线性结构?( D ) A、队列 B、栈 C、线性表 D、二叉树 2. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10)。每个元素占一个

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com