数据结构专科Word文档格式.docx
《数据结构专科Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构专科Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
,其数量级表示为<
O<
n) )。
5PCzVD7HxA
2.对于线性表<
11,43,15,50,30,22,94,72)进行散列存储时,若选用H(K>
=K%8作为散列函数,则散列地址为0的元素有<
1 )个,散列地址为3的元素有<
2 )个,散列地址为6的元素有<
3 )个。
jLBHrnAILg
3.从一个数组a[7]中顺序查找元素时,假定查找第一个元素a[0]的概率为1/3,查找第二个元素a[1]的概率为1/4,查找其余元素的概率均相同,则在查找成功时同元素的平均比较次数为<
35/12或2.92 )。
xHAQX74J0X
4.队列的插入操作在<
队尾 进行,删除在<
队首 )进行;
而栈的插入与删除均在<
栈顶 )进行。
5.在一个顺序队列Q中,判断队空的条件为<
Q.front==Q.rear ),判断队满的条件为<
<
Q.rear+1)%Maxsize==Q.front )LDAYtRyKfE
6.中缀表达式 7×
8+x)-5/<
y-3) 所对应的后缀表达式为:
7 8 x + ×
5 y 3 - / - )Zzz6ZB2Ltk
7.在一棵5层的完全二叉树中,结点数最多为<
31 )个,结点数最少为<
16 )个。
8.对于一棵具有n个结点的二叉树,若一个结点的编号为i(0≤i≤n-1>
,则它的左孩子结点的编号为<
2i+1),右孩子结点的编号为<
2i+2),双亲结点的编号为<
i-1)/2)。
dvzfvkwMI1
9.在一棵m阶B_树上,每个非树根结点的关键字数目最少为<
「m/2」-1 )个,最多为<
m-1 )个,其子树数目最少为<
「m/2」 ),最多为<
m )。
rqyn14ZNXI
10.一个广义表为((a>
(c,(d,(e,f>
>
b>
,则该广义表的长度为<
3 ),深度为<
4 )。
EmxvxOtOco
11.已知一个稀疏矩阵如下,试写出它对应的三元组线性表:
((1,4,3>
(2,1,2>
(2,5,5>
(3,3,4>
(4,2,6>
(5,5,1>
)。
SixE2yXPq5
三、运算题<
每小题9分,共18分)
1.<
9分)画出下面给出的广义表的带表头附加结点的链接存储结构图,并计算出它的长度和深度。
F=<
a,<
b,<
),c,<
d),e)))
答:
长度为:
2 , 深度为:
4
2.<
9分)已知一个带权图的顶点集V和边集G分别为:
V={0,1,2,3,4,5};
E={(0,l>
7,(0,2>
9,(0,3>
10,(l,4>
5,(l,5>
6,(2,3>
15,(2,4>
13,(3,5>
11};
6ewMyirQFL
则求出该图的最小生成树的权。
要求写出解题步骤)
最小生成树的权:
37
四、分析题<
每小题9分,共36分)
1.<
9分)已知有6个数据:
4、15、6、8、20、12,试把它们作为叶子结点的权值,画出对应的哈夫曼树,并计算出此树的带权路径长度WPL。
kavU42VRUs
1.WPL=158
9分)写出下图分别按前、中、后序遍历时得到的结点序列。
答案:
前序:
25 16 8 37 30 28 26 29 32 35 48 60
中序:
8 16 25 26 28 29 30 32 35 37 48 60
后序:
8 16 26 29 28 35 32 30 60 48 37 25
3.<
9分)一个广义表为E=((a,(a,b>
((a,b>
c>
,请用图形表示该广义表。
y6v3ALoS89
4.<
9分)已知一个图如左图所示,它的邻接表如右图所示,试写出从Va出发分别按深度优先遍历和广度优先遍历得到的顶点序列。
M2ub6vSTnP
深度优先遍历:
VA,VB,VD,VF,VC,VE
广度优先遍历:
VA,VB,VC,VF,VD,VE
五、算法题<
15分)
1.阅读算法,回答问题<
10分)
voidAA(LNode*&
HL>
{
InitList(HL>
。
InsertRear(HL,51>
inta[5]={17,10,11,28,14}。
for(inti=0。
i<
5。
i++>
InsertFront(HL,a[i]>
InsertRear(HL,35>
}
该算法被调用执行后,得到的以HL为表头指针的单链表中的数据元素依次为:
答案:
(14,28,11,10,17,51,35>
)。
2.编写算法<
5分)
编写在以BST为树根指针的二叉搜索树上进行查找值为item的结点的非递归算法,若查找成功,则由item带回整个结点的值并返回true,否则返回false。
0YujCfmUCw
boolFind(BtreeNode*BST,ElemType&
item>
boolFind<
BtreeNode*BST,ElemType&item)
{
while<
BST!
=NULL)
{
if<
item==BST->
data){item=BST->
data;
returntrue;
}
elseif<
item<BST->
data=BST=BST->
left;
elseBST=BST->
right;
}
returnfalse;
第2次自检自测
A )
=n。
/2
1,2,3,4,5,6)
2,4),<
3,4),<
3,5),<
3,6),<
4,5),<
4,6)}eUts8ZQVRd
A.线性表B.树C.集中D.图sQsAEJkW5T
3.若让元素a,b,c依次进栈,则出栈次序不可能出现的是<
B )种情况。
A.c,b,cB.c,a,bC.b,a,cD.a,c,bGMsIasNXkA
4.当利用大小为N的数组顺序存储一个栈时,假定用top==-1表示栈空,则向这个栈插入一个元素时,首先应执行<
A )语句修改top指针。
TIrRGchYzg
A.top++B.top=0C.top――D.top=-17EqZcWLZNX
每空1分,共17分)
n3+20n2log2n+3)/(12n>
)。
lzq7IGf02E
18,25,63,50,42,32,90,66)进行散列存储时,若选用H(K>
=K%9作为散列函数,则散列地址为0的元素有<
)个,散列地址为3的元素有<
)个,散列地址为5的元素有<
)个。
zvpgeqJ1hk
3.从一个数组a[9]中顺序查找元素时,假定查找第一个元素a[0]的概率为1/3,查找第二个元素a[1]的概率为1/4,查找第三个元素a[2]的概率为1/6,查找其余元素的概率均相同,则在查找成功时同元素的平均比较次数为<
)。
NrpoJac3v1
4.在循环单链表中,最后一个结点的指针域指向<
)结点。
5.从一个链栈中删除一个结点时.需要把栈顶结点的<
)域的值赋给<
)。
1nowfTG4KI
6.在一个顺序队列Q中,判断队空的条件为<
),判断队满的条件为<
)fjnFLDa5Zo
7.中缀表达式3×
x+2)-5所对应的后缀表达式为:
)
8.在一棵二叉树中,第5层上的结点数最多为<
)个。
9.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n>
),右孩子结点的编号为<
),双亲结点的编号为<
)。
tfnNhnE6e5
b,(c,(d>
(e,f>
),深度为<
)。
HbmVN777sL
1.答案:
O<
n2) 2.答案:
3、1、2 3.答案:
71/24或 2.96
4.答案:
表头 5.答案:
指针、栈顶指针
6.答案:
Q.front==Q.rear , <
Q.rear+1)%Maxsize==Q.frontV7l4jRB8Hs
7.答案:
3 x2+ ×
5 -
8.答案:
16 9.答案:
2i、2i+1、i/2(或[i/2]>
10.答案:
4、3
每小题10分,共20分)
10分)画出下面给出的广义表的带表头附加结点的链接存储结构图,并计算出它的长度和深度。
),c),<
d),e))
1.答案:
3 , 深度为:
3
10分)已知一个带权图的顶点集V和边集G分别为:
V={0,1,2,3,4,5,6,7};
8,(0,2>
5,(0,3>
2,(l,5>
25,(2,4>
9,(3,6>
10,(4,6>
4,(5,7>
20};
83lcPA59W9
2.答案:
55
每小题10分,共40分)
10分)已知有7个数据:
5、3、23、7、14、9、12,试把它们作为叶子结点的权值,画出对应的哈夫曼树,并计算出此树的带权路径长度WPL。
mZkklkzaaP
1.WPL=190
10分)写出下图分别按前、中、后序遍历时得到的结点序列。
25 16 8 37 30 28 26 29 32 60 48
8 16 25 26 28 29 30 32 37 48 60
8 16 26 29 28 32 30 48 60 37 25
10分)一个广义表为E=((a,(a,b>
10分)采用折半查找的方法对一维数组A(1:
12>
进行查找时,根据查找每一元素需要比较的次数填写下表。
AVktR43bpw
InsertRear(HL,50>
inta[5]={15,8,9,26,12}。
InsertRear(HL,30>
(12,26,9,8,15,50,30>
ORjBnOwcEd
第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>
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.堆尾
C2.答案:
D3.答案:
D4.答案:
B5.答案:
D
每空1分,共20分)
n3+5nlog2n+2)/(7n>
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>
,则该广义表的深度为<
PgdO0sRlMo
13.已知一个稀疏矩阵如下,试写出它对应的三元组线性表:
)。
1.O<
n2)
2.局部变量、值参变量
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>
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:
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。
Qinsert(Q,a[i]>
Qinsert(Q,Qdelete(Q>
>
Qinsert(Q,30>
+10>
while(!
QueueEmpty(Q>
cout<
Qdelete(Q>
<
'
'
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<
j>
ElemTypetemp=A[i]。
A[i]=A[j]。
A[j]=temp。
}while(i<
A[s]=A[j]。
A[j]=x。
if(s<
j-1>
______________________________________________。
bR9C6TJscw
if(j+1<
t>
pN9LBDdtrd
A[i].sin<x.sin
QuickSort(A,s,j-1>
QuickSort(A,j+1,t>
第4次自检自测
1.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n>
DJ8T7nHuGT
2.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n>
,则它的右孩子结点的编号为<
QF81D7bvUA
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
A2.答案:
B3.答案:
C4.答案:
C5.答案:
B
n3+200n2-98)/(200n>
ix6iFA8xoX
2.计算机执行一个递归调用语句或函数时,首先把<
)和局部变量的当前值以及调用后的返回地址压入栈,接着计算每个值参所对应的实在参数表达式的值并把它赋给值参变量,然后无条件转向算法的<
)继续执行。
wt6qbkCyDE
,若按Key%2条件进行划分,使得同一余数的元素成为一个子表,则得到的两个子表分别为<
Kp5zH46zRk
4.数据的存储结构被划分为<
)、索引和散列四种。
5.栈又称为<
)表,队列又称为<
)表。
6.后缀表达式“ 18 3 - 5 / ”的值为<
)。
7.一棵深度为4的满二叉树中的结点数为<
)个,一棵深度为4的满四叉树中的结点数为<
Yl4HdOAA61
8.在广义表的存储结构中,每个结点均包含有3个域,分别是<
)、<