级数据结构A及答案Word格式.docx
《级数据结构A及答案Word格式.docx》由会员分享,可在线阅读,更多相关《级数据结构A及答案Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
![级数据结构A及答案Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/22/2249b7b9-09a5-42db-a08d-8699601ae810/2249b7b9-09a5-42db-a08d-8699601ae8101.gif)
……(错)
8、在数据的存放无规律而言的线性表中进行查找的最佳方法是顺序查找(线性查
找)。
9、多重表文件和倒排文件都归属于多关键字文件。
10、不定长文件是指文件的长度不固定。
.填空题(每题1分,共10分)
1、若将数据结构形式定义为二元组(D,R),其中D是数据元素的有限集合,则R
是D上_关系的有限集合。
2、在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的
o
指针head可用p表示为
3、若不带头结点的单链表的头指针为head,则该链表为空的判定条件
是。
4、对于顺序存储的栈,因为栈的空间是有限的,在进行
的上溢,在进行运算时,可能发生栈的下溢。
5、树的存储结构常见的有双亲表示法,孩子链表法
子-兄弟表示法
运算时,可能发生栈
双亲表示法
6深度为k的完全二叉树至少有个结点,至多有个结点。
7、一棵有n个结点的满二叉树有0个度为1的结点、有
支(非终端)结点和(n+1)/2个叶子,该满二叉树的深度为
1。
(n-1)12个分
」og2n+
8、大多数排序算法都有两个基本的操作
9、线性有序表(a1,a2,a3,…,a256)是从小到大排列的,对一个给定的值k,
用二分法查找表中与k相等的元素,在查找不成功的情况下,最多需要查找8
次。
设有100个结点,用二分法查找时,最大比较次数是7。
)中的关键字按字母序的;
初始步长为快速排序一趟扫描的
10、设要将序列(Q,H,C,Y,P,A,M,S,R,D,F,X升序重新排列,则:
冒泡排序一趟扫描的结果是
的希尔(shell)排序一趟的结果是
5士甲曰
结果是
三.选择题(每题1分,共10分)
1、算法指的是()
A.计算机程序B.解决问题的计算方法
C.排序算法D.解决问题的有限运算序列
2、线性表采用链式存储时,结点的存储地址()
A.必须是不连续的B.连续与否均可
C.必须是连续的D.和头结点的存储地址相连续
3、将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为()
A.0
(1)B.0(n)C.O(m)D.O(m+n)
4、已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行操作()
A.s->
link=p;
p->
link=s;
B.s->
link=p->
link;
C.s->
link=p->
link;
p=s;
D.p->
s->
5、若进栈序列为1,2,3,4,5,6,且进栈和出栈可以穿插进行,则不可能出现的出栈序列是(D)
A.2,4,3,1,5,6B.3,2,4,1,6,5
C.4,3,2,1,5,6D.2,3,5,1,6,4
6、判断线索二叉树中p节点有右孩子的条件是(C)
A.p!
=NULLB.p->
rchild!
=NULL
C.p->
rtag==0D.p->
rtag==1
7、若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是(B)
A.9B.11C.15D.不确定
8、在表长为n的链表中进行线性查找,它的平均查找长度为()
A.ASL=nB.ASL=(n+1)/2
C.ASL=n+1D.ASL=log2(n+1)-1
9、对22个记录的有序表作折半查找,当查找失败时,至少需要比较(5)次关键字。
A.3B.4C.5D.6
10、在二叉排序树中,每个结点的关键字A_,B_一棵二叉排序,即可得到排序序列。
同一个结点集合,可用不同的二叉排序树表示,人们把平均检索长度最短的二叉排序树称作最佳二叉排序,最佳二叉排序树在结构上的特点是_C_。
供选择的答案:
A:
①比左子树所有结点的关键字大,比右子树所有结点的关键字小
2比左子树所有结点的关键字小,比右子树所有结点的关键字大
3比左右子树的所有结点的关键字都大
4与左子树和右子树各自所有结点的关键字无必然关系
B:
①前序遍历②中序(对称)遍历③后序遍历④层次遍历
C:
①除最下二层可以不满外,其余都是充满的
2除最下一层可以不满外,其余都是充满的
3每个结点的左右子树的高度之差的绝对值不大于1
4最下层的叶子必须在最左边
答案:
A=B=C=
4.简答题(每题7分,共14分)
1、假设以数组seqn[mO存放循环队列的元素,设变量rear和quelen分别指示
循环队列中队尾元素的位置和元素的个数。
(1)写出队满的条件表达式;
(2)写出队空的条件表达式;
(3)设m=40,rear=13,quelen=19,求队头元素的位置;
(4)写出一般情况下队头元素位置的表达式。
2、什么叫线索,线索二叉树,线索化?
将二叉树各节点中的空的左孩子指针域改为指向其前驱,空的右孩子指针域改为指向其后继,称这种新的指针为线索,所得到的二叉树称为线索二叉,将二叉树转变成线索二叉树的过程称为线索化。
5.算法题(每题10分,共20分)
1、阅读下面的算法:
LinkListmynote(LinkList*L)
■//L是不带头结点的单链表的头指针
if(L&
&
L->
next)
1
q=L;
L=L—>
next;
p=L;
SHwhile(p—>
next)p=p—>
■:
p—>
next=q;
q—>
next=NULL;
(1)说明语句S1的功能;
(2)说明语句组S2的功能;
(3)设链表表示的线性表为(a1,a2,…,an),写出算法执行后的返回值所表
示的线性表。
2、利用两个栈sl,s2模拟一个队列时,如何用栈的运算实现队列的插入,删除以及判队空运算。
请简述这些运算的算法思想。
6.应用题(每题6分,共36分)
1、分析下面程序段的时间复杂性:
y=0;
while(n>
=(y+1)*(y+1)){y++;
}
2、已知二叉树如下图所示:
(1)写出上图二叉树的中序遍历和后序遍历的结果;
(2)画出此二叉树还原成森林的图。
3、试画出对下图执行深度优先遍历产生的生成树(从1开始),并写出遍历序列。
(2)若查找元素54,需依次与哪些元素比较?
(3)若查找元素90,需依次与哪些元素比较?
(4)假定每个元素的查找概率相等,求查找成功时的平均查找长度。
5、设有一个输入数据的序列是{46,25,78,62,12,37,70,29},试画出从
空树起,逐个输入各个数据而生成的二叉排序树。
设待排序的排序码序列为{12,2,16,30,28,10,16*,20,6,18},试分别
写出使用以下排序方法每趟排序后的结果。
并说明做了多少次排序码比较。
(1)直接插入排序
(2)希尔排序(增量为5,2,1)
(3)冒泡排序
(4)快速排序
参考答案及评分标准
1.判断题(每题1分,共10分)
1>
V;
2、X;
3>
4、X;
5>
6>
7、X;
8>
9>
10、X;
2.填空题(每题1分,共10分)
1、关系的有限集合;
2、head=p—>
next—>
next;
3、head==NULL;
4、进栈、出栈;
5、双亲表示法,孩子链表表示法,孩子-兄弟表示法;
6、2k-1、2k-1;
7、0、(n-1)/2、(n+1)/2、|ljog2n+1;
8、比较、移动;
9、&
7;
10、HCQPAMSRDFXY、PACSQHFXRDMY、FHCDPAMQRSYX;
.选择题(每题1分,共10分)
1、D;
2、B;
3、C;
4、B;
5、D;
6、C;
7、B;
8、B;
9、C;
10、①、②、②;
1、
(1)quelen==m;
(2)quelen==0;
(3)34
(4)(rear-quelen+m)%m;
2、将二叉树各节点中的空的左孩子指针域改为指向其前驱,空的右孩子指针域改为指向其后继,称这种新的指针为线索,所得到的二叉树称为线索二叉,将二叉树转变成线索二叉树的过程称为线索化。
5.算法题(每题10分,共20分)
1、
(1)找到next域为NULL的节点,即链表的尾节点;
(2)令尾节点的next域指向原表头,即链表中的第一个节点;
再令第一个节点
的next域为NULL;
从而将原来链表中的第一个节点变为尾节点。
(3)算法执行后的线性表为(a2,…,an,a1)。
2、
(1)用栈s1和s2模拟一个队列的输入:
设s1和s2容量相等。
分以下三种情况讨
压栈入s2,之后元素入si栈;
若si满,s2不空(已有出队列元素),则不能入队。
(2)用栈si和s2模拟队列出队(删除):
若栈s2不空,退栈,即是队列的出队;
若s2为空且si不空,则将si栈中全部元素退栈,并依次压入s2中,s2栈
顶元素退栈,这就是相当于队列的出队。
若栈si为空并且s2也为空,队列
空,不能出队。
(3)判队空若栈si为空并且s2也为空,才是队列空。
6.应用题(每题6分,共36分)
1、该程序段中主要计算量在于循环过程。
当y的平方小于等于n时,y在每次循环过程
中加i,直到y的平方大于n为止。
所以该循环总共执行y次,且在循环退出时有y*y=n成立,注意到y是从0开始自加的,因此总的执行次数为y=sqrt(n),从而复杂度为O(sqrt(n))。
2、(i)中序:
bjfdgachei(i分,次序错一处都不得分)
后序:
jfgdbhieca(i分,次序错一处都不得分)
(2)评分标准:
每画对一个树,得i分。
(2)查找元素54,需依次与30,63,42,54等元素比较;
(3)查找元素90,需依次与30,63,87,95,72等元素比较;
(4)求ASL之前,需要统计每个元素的查找次数。
判定树的前3层共查找1+2X2+4X3=17次;
但最后一层未满,不能用8X4,只能用5X4=20次,所以ASL=1/12(17+20)=37/12~3.08。
5、
加兀
加引
加悠
空树・加恥
加25
6、
初始排01
列
i=1
i=2
i=3
i=4
i=5
i=6
i=7
i=8
i=9
[122
]'
[212
]
[2
23
1630
45
2810
67
16*20
89
618
12
16
30
28
206
18
、
*
、]
306
6
■i
2830
X]
2028
排序码比较次数
2
5
3
8
1+1+3+1+3+1+
+1+2=14
0123456789排序码比较次
数
(1+1+2+1)
(1+1
+1+1)=9
102166161218203028
d=1III
(3)起泡排序
初始排
4
7
9
排序码比较次
i=0
[1
**■
4*#***■4*
4***■
■_►
——*■
-MH-
f
30-
一28一
[16
-4~~»
Piv
Pvtpos
01
ot
0,1,2,3
18]
2]poszfpos
]posfpos
0,1
[6
[28
pos2posio]
4,5,6,7,
[10
[2816
1posfpos
fpos
pos
4,5,6
[1816
I
[30
ipos
[1616
[20
*[pos]
16*[16
Whenyouareoldandgreyandfullofsleep,
Andnoddingbythefire,takedownthisbook,
Andslowlyread,anddreamofthesoftlook
Youreyeshadonce,andoftheirshadowsdeep;
Howmanylovedyourmomentsofgladgrace,
Andlovedyourbeautywithlovefalseortrue,
Butonemanlovedthepilgrimsoulinyou,
Andlovedthesorrowsofyourchangingface;
Andbendingdownbesidetheglowingbars,
Murmur,alittlesadly,howlovefled
Andpaceduponthemountainsoverhead
Andhidhisfaceamidacrowdofstars.
Thefurthestdistaneeintheworld
Isnotbetweenlifeanddeath
ButwhenIstandinfrontofyou
Yetyoudon'
tknowthat
Iloveyou.
IsnotwhenIstandinfrontofyou
Yetyoucan'
tseemylove
Butwhenundoubtedlyknowingthelovefromboth
Yetcannotbetogether.
Isnotbeingapartwhilebeinginlove
ButwhenIplainlycannotresisttheyearning
Yetpretendingyouhaveneverbeeninmyheart.
Isnotstrugglingagainstthetides
Butusingone'
sindifferentheart
Todiganuncrossableriver
Fortheonewholovesyou.