数据结构第2阶段测试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

江南大学现代远程教育第二阶段测试卷

考试科目:《数据结构》第五章至第七章(总分100分)时间:90分钟______________学习中心(教学点)批次:层次:

专业:学号:号:

:得分:

一、选择题(每题3分,共30分)

1、将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1..298]中,则A中的元素A[66,65]在数组B中的位置K=()。

A、195 B、196 C、197 D、198

2、广义表(a,(b,(),c))的深度为()。

A、1 B、2 C、3 D、4

3、下列叙述中错误的是()。

A、树的度与该树中结点的度的最大值相等

B、二叉树就是度为2的有序树

C、有5个叶子结点的二叉树中必有4个度为2的结点

D、满二叉树一定是完全二叉树

4、一棵二叉树中第6层上最多有()个结点。

A、2B、31C、32D、64

5、由树转换而得的二叉树,根结点()。

A、没有左子树B、没有右子树C、左右子树都有D、视树的形态而定

6、一棵高为k的二叉树最少有()个结点。

A、k-1 B、k C、k+1 D、2k-1 E、2k-1

7、含n个顶点的有向图最多有()条弧。

A、n B、n(n-1) C、n(n+1) D、n2

8、设对下图从顶点a出发进行深度优先遍历,则()是可能得到的遍历序列。

A、acfgdeb B、abcdefg C、acdgbef D、abefgcd

9、设图G的邻接矩阵A=

1

1

1

1

,则图G中共有()个顶点。

A、1 B、3 C、4 D、9

10、具有n个顶点的有向强连通图最少有()条弧。

A、n-1 B、n C、n(n-1) D、n(n-1)/2

二、(10分)

试将下图中的树转化为二叉树。

三、(10分)

试写出对如下无向图从顶点A出发进行广度优先遍历可能得到的所有遍历序列。

四、(15分)

设有向网如下,试用迪杰斯特拉算法求从顶点A出发到其余各顶点的最短路径。

五、(15分)

一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。若按层次顺序从1开始对全部结点编号,则:

⑴第i层上有多少个结点?

⑵编号为p的结点的第i个孩子结点(若存在)的编号是多少?

⑶编号为p的结点的双亲结点(若存在)的编号是多少?

六、(20分)

试设计算法,对以邻接矩阵存储的无向图进行深度优先遍历。

答案

一、选择题

1、A

2、C

3、B

4、C

5、B

6、B

7、B

8、A

9、B

10、B

二、试将下图中的树转化为二叉树。

答:

三、试写出对如下无向图从顶点A出发进行广度优先遍历可能得到的所有遍历序列。

答:

ABCEGHFD

ABCEHGFD

ACBGHEDF

ACBHGEDF

四、设有向网如下,试用迪杰斯特拉算法求从顶点A出发到其余各顶点的最短路径。

答:

A / / / 0 /

B ∞∞10 ACDB 1 8 ACDEB

C 2 AC / AC / AC 2 / AC

D 7 AD 5 ACD / ACD 3 / ACD

E ∞∞ 6 ACDE 4 / ACDE

F ∞ 6 ACF 6 ACF 5 6 ACF

G ∞∞13 ACDG 6 13 ACDG

D PATH D PATH D PATH

五、一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点

都有k棵非空子树。若按层次顺序从1开始对全部结点编号,则: ⑴第i层上有多少个结点?

⑵编号为p的结点的第i个孩子结点(若存在)的编号是多少? ⑶编号为p的结点的双亲结点(若存在)的编号是多少?

答:

⑴第1层有1个结点,第i 层结点数=第i-1层结点数*k (2≤i ≤H )=1

-i k

⑵当根结点以及前面的p-1个结点的孩子都编了号之后,才开始为结点p 的孩子编号。结点p 的第i 个孩子的编号为(1+(p-1)*k)+i。

⑶若p=1,则为根结点,无双亲,否则可设双亲结点编号为s,由⑵可知结点s的孩子结点的编号围为(s-1)*k+2~(s-1)*k+k+1,即

k

k p s k p 2

1-+≤

≤-,又由s为整数,可得⎥⎦

⎢⎣⎢-+=k k p s 2。

六、试设计算法,对以邻接矩阵存储的无向图进行深度优先遍历。

答:

int depth(BiTree t){ if (!t) return 0; if(t->lchild)//有左子树

if (t->rchild){ //左、右子树均有 hl=depth(t->lchild); //求左子树高度 hr=depth(t->rchild); //求右子树高度 return hl>hr?hl+1:hr+1; }

else //只有左子树

相关文档
最新文档