数据结构试题库(3)

2019-01-19 11:47

(2) 写出队空的条件表达式;

(3) 设m=40,rear=13,quelen=19,求队头元素的位置; (4) 写出一般情况下队头元素位置的表达式。

(1) quelen == m (2) quelen == 0

(3) ( 13 - 19 + 40 ) % 40 = 34 (4) ( rear - quelen + m ) % m

110. 已知一棵二叉树的中序序列为ABCDEFG,层序序列为BAFEGCD,请画出该二叉树。 B / \\ A F / \\ E G / C \\ D

111. 已知一棵二叉树的前序序列为ABCDEFGH,中序序列为CBEDFAGH,请画出该二叉树。

A / \\ B G / \\ \\ C D H / \\ E F

112. 已知一棵二叉树如图所示。请分别写出按前序、中序、后序和层次遍历是得到的顶点序列。

前序:A,B,D,G,C,E,F,H 中序:D,G,B,A,E,C,H,F 后序:G,D,B,E,H,F,C,A 层次:A,B,C,D,E,F,G,H

D G B A C E F H 113. 已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H, A,C,K,I,L,F。 (1) 写出该二叉树的后序序列; (2) 画出该二叉树;

(3) 求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。

该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。 该二叉树的形式如图所示: A

该二叉树高度为:5。 度为2的结点的个数为:3。 度为1的结点的个数为:5。 度为0的结点个数为:4。

114. 有一份电文中共使用 6个字符:a,b,c,d,e,f,它们的出现频率依次为2,3,4,7,8,9,试构造一棵哈夫曼树,并求其加权路径长度WPL,字符c的编码。

WPL=80 字符c:001(不唯一)

J K D G B E F H I L C 115. 对下面的有向图,从顶点V1开始进行遍历,试画出遍历得到的DFS生成森林和BFS生成森林。

V6 V5 V1 V4 V2 V5V7V8 遍历得到的DFS生成森林和BFS生成森林如下图:

116. 采用哈希函数H(k)=3*k mod 13并用线性探测开放地址法处理冲突,在数列地址空间[0..12]中对关键字序列22,41,53,46,30,13,1,67,51 (1)构造哈希表(画示意图); (2)装填因子;等概率下 (3)成功的和

(4)不成功的平均查找长度 1) 散列地0 址 关键字 数 13 22 1 53 1 1 2 41 1 67 2 46 1 51 1 30 1 比较次1 1 2 3 4 5 6 7 8 9 10 11 12 V7DFS生成森林 V5 V1 V1 V4 V2 V5 V4 V2 V6 V5V5V6 V7V8 V8 BFS生成森林

(2)装填因子=9/13=0.7 (3)ASLsucc =11/9 (4)ASLunsucc =29/13

117. 设有一组关键字{9,01,23,14,55,20,84,27},采用哈希函数:H(key)=key mod 7 ,表长为10,用开放地址法的二次探测再散列方法Hi=(H(key)+di) mod 10(di=12,22,32,…,)解决冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

散列地0 址 关键字 数 平均查找长度:ASLsucc=(1+1+1+2+3+4+1+2)/8=15/8

以关键字27为例:H(27)=27%7=6(冲突) H1=(6+1)=7(冲突) H2=(6+22)=0(冲突) H3=(6+33)=5 所以比较了4次。 118. 对于给定的一组记录的关键字{ 23,13,17,21,30,60,58,28,30,90},试分别写出冒泡排序、快速排序、堆排序、归并排序第一趟排序后的结果。

冒泡排序13,23,17,21,,28,30,60,58,30*, 90 快速排序:(21,13,17,) 13,( 30,60,58,28,30*,90 ) 堆排序: 13,21,17,23,30,60,58,28,30*,90,

归并排序按层遍历:(13 23) (17 21 ) (30 60 ) ( 28 58 ) (30* 90)

119. 阅读下列递归算法,写出非递归方法实现相同功能的C程序。

void demo1(seqstack *s)

{ int I, arr[64], n=0;

while (!stackempty(s)) arr[n++]=pop(s); for(i=0;

120. 阅读下列递归算法,写出非递归方法实现相同功能的C程序。

void demo2(seqstack *s,int m)

{ seqstack t; int i; initstack(t);

while(! Stackempty(s))

14 01 1 9 1 23 2 84 27 55 1 20 2 比较次1 3 4 1 2 3 4 5 6 7 8 9 if(i=pop(s)!=m) push(t,i); while(! Stackempty(t)) { i=pop(t); push(s,I); } }

121. 阅读下列递归算法,写出非递归方法实现相同功能的C程序。

void test(int &sum)

{ int x; scanf(x);

if(x=0) sum=0 else {test(sum); sum+=x;} printf(sum); }

#include (1分) void main() (1分)

{ int x,sum=0,top=0,s[]; (1分) scanf(“%d”,&x) while (x<>0)

{ s[++top]:=a; scanf(“%d”,&x); }(3分) while (top)

sum+=s[top--]; (3分)

printf(“%d”,sum); (1分)

}

122. 试写出把图的邻接矩阵表示转换为邻接表表示的算法。

设图的邻接矩阵为g[n][n](针对无向图),定义邻接表节点的类型为 struct edgenode { int adjvex; edgenode next; }

typedef edgenode *adjlist[n]; void matritolist (int g[][], adjlist gl, int n ) { edgenode *p, *q;

for (int i=0 i


数据结构试题库(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Unit 1 练习答案新世纪大学英语综合教程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: