elseif(x==elements[i])return++i;
elsereturnSch4(x,i+1);
}
补充题:
(2)求顺序搜索有序表失败时的平均搜索长度。
设有序表为(a,a,…,a),通常可以假定待查n21元素位于a之前,a与a之间,a与a之间,…,a与a之间以及a之后的共n+1个位置处的n312n-11n2概率是相等的。
答:
树第六章
2)题1.第107页,第(C,可分别组成多少不同的无序树、有序树和二叉树?
A,B和对于三个结点9棵
(1)无序树:
答:
12棵
(2)有序树:
棵3)二叉树:
30(次方i-1
(1)k的、2取整)/ki+k-2
(2)(1m+1)k+(3)(i-0不等于1)%k((4)i-)题页,第(42.第107设对一棵二叉树进行中序遍历和后序遍历的结果分别为:
BDCEAFHG1)中序遍历(DECBHGFA)后序遍历(2画出该二叉树。
答:
小题661073.第页,第()题的第设计算法,交换一棵二叉树中每个结点的左、右子树。
template
voidBTree:
:
Exch(BTNode*p)
{
if(p){
BTNode*q=p->lchild;
p->lchild=p->rchild;
p->rchild=q;
Exch(p->lchild);
Exch(p->rchild);
}
}
4.第107页,第10题
将图题6-24中的树转换成二叉树,并将图6-23中的二叉树转换成森林。
11题5.第107页,第6-24中的树的先序遍历和后序遍历的结果。
给出对图K
,H,,C,M,B,LGD答:
先序:
A,,E,F,J,A,,BL,K,C,G,F,E,DM,H,,后序:
J12题1076.第页,第分别以下列数据为输入,构造最小堆。
80,60,70,20,30,4050,
(1)10,1020,40,30,5070
(2)80,,60,,40,30,50,,,,,(3)8010702060)(1
(2)
3)(题107页,第137.第求结果优先权队列分别以上题的数据为输入,从空的优先权队列开始,依此插入这些元素,
的状态。
(2)小题11088.第页,第14题第()、,对字符集合进行哈夫曼编码,S={A,B,C,D,E,F},W={2,3,5,7,9,12}W为各字符的频率。
设
1)画出哈夫曼树(
(2)计算带权路径长度
第七章集合与搜索树
1.第137页,第(5),
建立37,45,91,25,14,76,56,65为输入时的二叉搜索树,再从该树上依此删除76,45,则树形分别如何?
)137页,第(62.第试写一个判定任意给定的二叉树是否二叉搜索树算法。
;boolfail=false;?
intk=-template
voidBTree:
:
IsBiTree(BTNode*p,int&k,bool&fail)
{
if(p&&!
fail){
IsBiTree(p->lchild,k,fail);
if(kelement)k=p->element;
elsefail=true;
IsBiTree(p->rchild,k,fail);
}
}
8)页,第(.第1373AVL搜索树。
以下列序列为输入,从空树开始构造X,Y,C,
(1)A,Z,B2)A,V,L,T,R,E,I,S,O,K
(
)12.第137页,第(4时,树中元素个数最少为多少?
B-树的高度为2阶5:
5
答)题137.第页,第(135a,g,f,b,k,d,h,m,j,e,s,i,r,x,建立从空树开始,以关键字序列:
;
树B-阶
(1)4.
(2)5阶B-树。
树4阶B-
(1)
阶B-树
(2)5
14)题6.第137页,第(a,e,f,h。
4阶B-树上依次删除从上题的
第八章散列与跳表
页,第(3)题1.第154h(key)=key%11。
采用线性探查法解决冲突,试用关键字值序设散列表ht[11],散列函数,55建立散列表。
453525,,80,,60,,5070列:
6页,第()题1542.第C++给出用拉链方法解决冲突的散列表搜索操作的函数实现。
template
boolLinkedHashTable:
:
Search(constK&k,E&e)const
{
inti=k%M,j;
HNode*p=ht[i];//元素结点类型Hnode
while(p){
if(p->element==k)returntrue;
p=p->nextsynonym;
}
returnfalse;
}
3.第154页,第(3)题
设散列表ht[11],散列函数h(key)=key%11。
采用二次探查法解决冲突,试用关键字值
序列:
70,25,80,35,60,45,50,55建立散列表。
)题154页,第(44.第(key)=key%9+1h(key)=key%11,h对上题的例子,若采用双散列法,试以散列函数21建立散列表。
图第九章
1)题1881.第页,第(对下面的有向图求
(1)每个顶点的入度和出度;
(2)强连通分量(3)邻接矩阵
2)题第188页,第(.2,5〉〉,〈4,〉〉,〈4,0,〈4,1,〉〈,〉〈,〉当以边〈1,0,〈13〉,2,1,〈24〉,3,2,〈346个顶点没有边的图开始,通过依此插入这些边,建立邻接表结构。
5〈,0〉的次序从只有画出该邻接表。
4188页,第()题3.第已知有向图的邻接表,试写出计算各顶点的入度的算法。
template
voidLinkedGraph:
:
Degree()
{
int*d=newint[n];inti;
ENode*p;
for(i=0;ifor(i=0;ip=a[i];
while(p){
d[p->adjvex]++;
p=p->nextarc;
}
}
for(i=0;i}
)题页,第(.4第18862为起始顶点的深度优先搜索和广度优先搜索。
分别所建立的邻接表上进行以顶点在题2画出遍历所得到的深度优先搜索和广度优先搜索的生成森林(或生成树)。
)题188第页,第(85.
.分别设计算法,在邻接矩阵上实现有向图的深度优先搜索template
voidMGraph:
:
DFS(intv,boolvisited[])
{
visited[v]=true;
cout<<<for(intj=0;jif(a[v][j]&&!
visited[j])
DFS(j,visited);
}
)题10第188页,第(6.。
9-3所示的工序组成。
若各工序以流水方式进行(即串行进行)设某项工程由图题
网络;AOV
(1)画出给工程的
(2)给出该工程的全部合理的工程流程。
7.第188页,第(11)题
设有边集合:
〈0,1〉,〈1,2〉,〈4,1〉,〈4,5〉,〈5,3〉,〈2,3〉
(1)求此图的所有可能的拓扑序列;
(2)若以此顺序通过加入边的方式建立邻接表,则在该邻接表上执行拓扑排序算法(TopoSort),则得到的拓扑序列是其中哪一种?
13)题8.第188页,第(的无向图的最小代价生成树。
使用普里姆算法以1为源点,画出图题9-5
)题页,第(9.第18816d9-6的有向图中以顶点A为源点的单源最短路径。
写出一维数组用迪杰斯特拉算法求图题在执行该算法的过程中各步的状态。
和path
源终最短路路径长
3AB(A,B)
4C(A,B,C)
4(A,D)D
4E(A,B,E)
G__
d[D]d[E]d[G]Sd[A]
d[B]d[C]
path[C]path[E]path[A]path[D]path[G]path[B]
∞4,AA5,A0,-13,A∞,-1,-1
4,B0,-1B3,A4,A∞,-14,B
4,B0,-14,A,-13,AC4,B∞4,B4,A∞0,-1,-14,BD3,A
4,B
∞,-1
4,B
3,A
4,A
E
0,-1
10.第188页,第(17)题
用弗洛伊德算法求图题9-6的有向图的所有顶点之间的最短路径。
写出二维数组d和path在
执行该算法的过程中各步的状态。
path
d
-1A-1AA-1∞54∞30
-1B-1-1B-1∞1∞10∞
-1C-1-1-1-1∞2∞∞0∞
-1-1-1-1-1D3∞∞0∞∞-1∞-1∞∞∞2-10E-1-1
-1
-1∞∞G∞-13-1
2G0
(1)初始状态
dA
pathA
-1A-1AA-13054
-10-11-1-11BB
-1C-1-10-1-12
-1-1-13-1D-10
-1-1-1-102E-1
-1
G-1-1-1G0
32∞∞∞
pathB
dB
34044∞BAB-1-1A
-11∞∞B-11B-1∞0-1
-1-10∞∞-12-1∞∞-1C
-14B∞40-1B3∞-1D
-10∞∞∞-1-1∞2-1-1E
-1
0∞-1∞3G∞2-1-1G
pathC
dC
BAB-1A-14∞4034
-1C-1-1BB∞011∞3
-1∞-1∞0C2-1-1-1∞∞-134∞∞4-1-1D0BB
-1E0-12∞∞-1-1∞-1∞
-1
G2∞-1-103G-1∞∞
pathD
dD
BA-1AB-143044∞-1-1-1BBC∞3∞011
-1-1BDC-1∞6025∞-1BB-1D-1∞044∞3
-1∞∞B052-1D-1E6
-1
∞0237B6D
-1GG
pathEpathGdEdG
∞-1AB
AB444-103
-1-1-1BCB10∞31∞-1C-1D-1B∞5206∞-1DB-1B-1∞3∞404
-1-1DE-1B∞265