李春葆《数据结构教程》(C++语言描述)模拟试题及详解(一~二)【圣才出品】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
李春葆《数据结构教程》(C++语言描述)模拟试题及详解(一)
一、单项选择题(每小题2分,共20分)
1.队列的特点是()。
A.先进后出
B.先进先出
C.任意位置进出
D.前面都不正确
【答案】B
2.有n个记录的文件,如关键字位数为d,基数为r,则基数排序共要进行()遍分配与收集。
A.n
B.d
C.r
D.n-d
【答案】B
【解析】基数排序是按组成关键字的各位值进行分配收集而完成的。
3.在二叉树节点的先序序列、中序序列和后序序列中,所有叶子节点的先后顺序()。
A.都不相同
B.完全相同
C.先序和中序相同,而与后序不同
D.中序和后序相同,而与先序不同
【答案】B
【解析】无论是哪种遍历方式,遍历叶子节点时,都是先访问左子树,后访问右子树。
4.限定在一端加入和删除元素的线性表称为()。
A.双向链表
B.单向链表
C.栈
D.队列
【答案】C
【解析】根据栈后进先出的特性,可见栈都在一端对元素进行操作。
5.设内存工作区可容纳8个记录,初始文件共有64个关键字不同的记录,且已按关键字递减排列,如用置换.选择排序产生初始归并段,最长初始归并段所含记录数是()。
A.6
B.7
C.8
D.9
【答案】C
【解析】对于置换选择排序,输入的文件是以关键字降序排列时,所得的初始归并段的最大长度为工作区的大小。当输入的文件以关键字的升序排序时,只能得到一个长度为文件长度的初始归并段。
6.设森林F对应的二叉树为B,它有m个节点,B的根为p,p的右子树上的节点个数为n,森林F中第一棵树的节点个数是()。
A.m-n-1
B.n+l
C.m-n+1
D.m-n
【答案】D
7.设有198个初始归并段,如采用K-路平衡归并三遍完成排序,则K值最大为()。A.12
B.13
C.14
D.15
【答案】C
【解析】k一路平衡归并,归并趟数公式s=[1og k m],m指归并段数,s指趟数。要三遍完成遍历,那就看两遍完成排序的需遍历的最小数。把s=2和m=198带入公式,可知两遍完成排序时k最小为15,所以k<15。
8.下面关于广义表的叙述中,不正确的是()。
A.广义表可以是一个多层次的结构
B.广义表至少有一个元素
C.广义表可以被其他广义表所共享
D.广义表可以是一个递归表
【答案】B
【解析】B项错误,广义表可以不包含任何元素。
9.如以顺序表示存储二叉树,每个节点占用一个存储单元,则深度为K的单左枝二叉树共浪费()个存储单元。
A.2K-1-K
B.2K-1-K-1
C.2K-K-1
D.2K-K+1
【答案】A
【解析】要用顺序表示存储二叉树,应补充虚拟节点构成一个完全二叉树,本题中完全二叉树的前K-1导为一个满二叉树,节点数为2K-1-1,第K层的节点数为1,可知节点总数为2K-1,可知要浪费2K-1-K,进而可知浪费2K-1-K个存储单元。
10.从L=((apple,pear),(orange,banana))中,取出banana元素的表达式为()
A.
B.
C.
D.
【答案】D
【解析】tail(L)获得除首元素外所有的元素组成的表。Head(L)获得表中第一个元素。
二、(共10分)
试对如图5-1中的二叉树画出其:
(1)顺序存储表示;
(2)二叉链表存储表示的示意图。
图5-1二叉树示意图
答:(1)用一组连续的存储单元来存储二叉树的数据元素,对完全二叉树,只要按点编号i存储到相应位置即可;对于一般二叉树,需按完全二叉树的形式来存储,必须处理不存在的节点。
二叉树的顺序存储表示如表5-1所示。
表5-1二叉树的顺序存储表
(2)链式存储结构二叉树一般都使用二叉链表作为存储结构,每个节点包含三个域,数据域及左右指针域,分别指向左右孩子。
二叉树的二叉链表存储表示的示意图如图5-2所示:
图5-2二叉树的二义链表存储表示示意图
三、(共10分)
判断以下序列是否是小根堆?如果不是,将它调整为小根堆。
(1){12,70,33,65,24,56,48,92,86,33}
(2){05,23,20,28,40,38,29,61,35,76,47,100)
答:做法就是把序列写成完全二叉树,看父节点都是否比孩子结点小,如果是那就是最小根堆。
(1)不是小根堆。调整为:{12,24,33,65,33,56,48,92,86,70}
(2)是小根堆。
四、(本题10分)
已知一个图的顶点集V和边集E分别为: