=NULL)
{
if- data){item=BST->data;returntrue;}
elseif- data=BST=BST->left;
elseBST=BST->right;
}
returnfalse;
}
数据结构<专科)
第3次自检自测
一、单选题<每小题2分,共10分)
1.在以HL为表头指针的带表头附加结点的循环单链表中,链表为空的条件为< )。
A.HL->next==NULLB.HL->next==-1
C.HL->next==HLD.HL->next==1
2.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n>,则它的双亲结点的编号为< )。
2MiJTy0dTT
A.2iB.2i+1
C.2i-1D.i/2 <注:
下取整)
3.在一个具有n个顶点的有向完全图中,包含有< )条边。
A.nB.n(n-1>/2
C.2nD.n(n-1>
4.中缀算术表达式3*(5+x>/y所对应的后缀算术表达式为< )。
A.5x+3*y/B.35x+*y/gIiSpiue7A
C.3*5+x/yD.35*x+y/uEh0U1Yfmh
5.当从一个小根堆中删除一个元素时,需要把< )元素填补到堆顶位置,然后再按条件把它逐层向下调整。
IAg9qLsgBX
A.堆顶元素的左孩子B.堆顶元素的右孩子
C.堆的最左边一个元素D.堆尾
1.答案:
C2.答案:
D3.答案:
D4.答案:
B5.答案:
D
二、填空题<每空1分,共20分)
1.一个算法的时间复杂度为,其数量级表示为< )。
2.计算机执行一个递归调用语句或函数时,首先把值参和< )的当前值以及调用后的返回地址压入栈,接着计算每个值参所对应的实在参数表达式的值并把它赋给< ),然后无条件转向算法的第一条语句继续执行。
WwghWvVhPE
3.假定一个线性表为(12,23,74,55,63.40.82,36>,若按Key%3条件进行划分,使得同一余数的元素成为一个子表,则得到的三个子表分别为< )、< )和< )。
asfpsfpi4k
4.在一个顺序队列中,队首指针指向队首元素的< )位置。
5.后缀表达式“ 2 50 * 3 - ”的值为< )。
6.一棵深度为6的满二叉树中的结点数为< )个,一棵深度为3的满三叉树中的结点数为< )个。
ooeyYZTjj1
7.数据的逻辑结构被分为集合结构、< )、< )和图结构四种。
8.在广义表的存储结构中,每个结点均包含有3个域,分别是行号、列号和< )。
9.队列的插入操作在< )进行,删除在< )进行。
10.在一个顺序队列Q中,判断队空的条件为< )。
11.在一棵m阶B_树上,每个非树根结点的关键字数目最少为< )个,最多为< )个。
BkeGuInkxI
12.一个广义表为((a>,b,(c,(d,(g>>>,(e,f>>,则该广义表的深度为< )。
PgdO0sRlMo
13.已知一个稀疏矩阵如下,试写出它对应的三元组线性表:
< )。
答案:
1.O2.局部变量、值参变量
3.(12,63,36>、(55,40,82>、(23,74>
4.前一个
5.97
6.63、13
7.线性结构、树结构
8.元素值
9.答案:
队尾,队首
10.答案:
Q.front==Q.rear
11.答案:
「m/2」-1、m-1
12.5
13.答案:
((1,4,3>,(2,1,2>,(2,5,5>,(3,3,4>,(4,2,6>,(5,5,1>>3cdXwckm15
三、分析题<每小题10分,共50分)
1.按照元素36、25、45、16、20、48、72、18的插入次序,生成一颗二叉排序树,试画出此二叉排序树。
h8c52WOngM
答案:
2.已知一个带权无向图如下:
请画出其最小生成树。
答案:
3.已知一维数组A<1:
10)中的数据如下,试写出在快速排序的过程中每次划分后数据的排列情况。
⑴[33144235]46[5092537860]
⑵1433[4245]4650[92537860]
⑶143335424650[605378]92
⑷14333542465053607892
4.采用折半查找的方法对一维数组A(1:
12>进行查找时,根据查找每一元素需要比较的次数填写下表。
答案:
5.假定一棵普通树的广义表表示为a(b(e>,c(f(h,i,j>,g>,d>,分别写出先根、后根、按层遍历的结果。
v4bdyGious
答案:
先根:
a,b,e,c,f,h,i,j,g,d;
后根:
e,b,h,i,j,f,g,c,d,a;
按层:
a,b,c,d,e,f,g,h,i,j;
四、算法题<每题10分,共20分)
1.阅读程序,回答问题。
voidAF(Queue&Q>
{
InitQueue(Q>。
inta[4]={5,8,12,15}。
for(inti=0。
i<4。
i++>Qinsert(Q,a[i]>。
Qinsert(Q,Qdelete(Q>>。
Qinsert(Q,30>。
Qinsert(Q,Qdelete(Q>+10>。
while(!
QueueEmpty(Q>>cout<<<''。
J0bm4qMpJ9
}
该算法被调用后得到的输出结果为:
_______________。
答案:
121553018
2.从一维数组A[n]上进行快速排序的递归算法。
voidQuickSort(ElemTypeA[],ints,intt>
{
inti=s,j=t+1。
ElemTypex=A[s]。
do{
doi++。
while(__________________________________>。
XVauA9grYP
//填写一个循环条件
doj--。
while(A[j].stn>x.stn>。
if(i
{
ElemTypetemp=A[i]。
A[i]=A[j]。
A[j]=temp。
}
}while(i。
A[s]=A[j]。
A[j]=x。
if(s______________________________________________。
bR9C6TJscw
if(j+1______________________________________________。
pN9LBDdtrd
}
A[i].sin<x.sin
QuickSort(A,s,j-1>
QuickSort(A,j+1,t>
数据结构<专科)
第4次自检自测
一、单选题<每小题2分,共10分)
1.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n>,则它的左孩子结点的编号为< )。
DJ8T7nHuGT
A.2iB.2i+1
C.2i-1D.i/2 <注:
下取整)
2.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n>,则它的右孩子结点的编号为< )。
QF81D7bvUA
A.2iB.2i+1
C.2i-1D.i/2 <注:
下取整)
3.在线性表的散列存储中,装填因子α又称为装填系数。
若用m表示散列表的长度,n表示待散列存储的元素的个数,则α等于< )。
4B7a9QFw9h
A.m/nB.2m/n
C.n/mD.2n/m
4.在如下一维数组A中折半查找85时,所需比较的次数为( >。
A.2B.3
C.4D.5
5.对于一棵含有40个结点的理想平衡树,它的高度为< )。
A.5B.6
C.7D.8
1.答案:
A2.答案:
B3.答案:
C4.答案:
C5.答案:
B
二、填空题<每空1分,共20分)
1.一个算法的时间复杂度为,其数量级表示为< )。
ix6iFA8xoX
2.计算机执行一个递归调用语句或函数时,首先把< )和局部变量的当前值以及调用后的返回地址压入栈,接着计算每个值参所对应的实在参数表达式的值并把它赋给值参变量,然后无条件转向算法的< )继续执行。
wt6qbkCyDE
3.假定一个线性表为(12,23,74,55,63.40.82,36>,若按Key%2条件进行划分,使得同一余数的元素成为一个子表,则得到的两个子表分别为< )和< )。
Kp5zH46zRk
4.数据的存储结构被划分为< )、< )、索引和散列四种。
5.栈又称为< )表,队列又称为< )表。
6.后缀表达式“ 18 3 - 5 / ”的值为< )。
7.一棵深度为4的满二叉树中的结点数为< )个,一棵深度为4的满四叉树中的结点数为< )个。
Yl4HdOAA61
8.在广义表的存储结构中,每个结点均包含有3个域,分别是< )、<