数据结构2019 作业答案

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

1判断题

(√)1. 数据的逻辑结构与数据元素本身的内容和形式无关。

(×)2. 线性表的逻辑顺序与物理顺序总是一致的。

(√)3. 若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。

(×)4. 对于同一组待输入的关键码集合,虽然各关键码的输入次序不同,但得到的二叉搜索树都是相同的。

(√)5. 最优二叉搜索树的任何子树都是最优二叉搜索树。

(√)6. 在二叉搜索树上插入新结点时,不必移动其它结点,仅需改动某个结点的指针,使它由空变为非空即可。

(√)7. 有n(n≥1)个顶点的有向强连通图最少有n条边。

(×)8. 连通分量是无向图中的极小连通子图。

(×)9. 二叉树中任何一个结点的度都是2。

(×)10. 单链表从任何一个结点出发,都能访问到所有结点。

二、单选题

1 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动(B)个元素。

A.8 B. 63.5 C. 63 D. 7

2 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[3][3]在(A)位置,(10)表明用10进数表示。

A.692(10) B. 626(10) C. 709(10) D. 724(10)

3 N个顶点的连通图至少有(A)条边。

A.N-1 B. N C. N+1 D. 0

4 下面程序的时间复杂度为(C)。

for(int i=0; i

for(int j=0; j

a[i][j]=i*j;

A.O(m2) B. O(n2) C. O(m*n) D. O(m+n)

5 设单链表中结点的结构为(data, link)。已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作(B)。

A.s->link=p->link; p->link =s; B. q->link=s; s->link =p;

C. p->link=s->link; s->link =q;

D. p->link=s; s->link =q;

6栈的插入和删除操作在(A)进行。

A.栈顶 B. 栈底 C. 任意位置 D. 指定位置

7 若让元素1,2,3依次进栈,则出栈次序不可能出现哪种情况(C)。

A.3,2,1 B. 2,1,3 C. 3,1,2 D. 1,3,2

8 广义表A(a),则表尾为(C)。

A.a B. (()) C. 空表 D. (a)

9 采用邻接表存储的图的深度优先遍历算法类似于二叉树的(B)。

A.中序遍历 B. 前序遍历 C. 后序遍历 D. 按层次遍历

10 每次从无序表中挑选出一个最小或最大元素,把它交换到有序表的一端,此种排序方法叫做(B)排序。

A.插入 B. 选择 C. 交换 D. 外排序

三、填空题

1. 算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。它应具有输入、输

出、确定性、有穷性和可执行性等特性。

2. 当问题的规模n趋向无穷大时,算法执行时间T(n)的数量级被称为算法的时间复杂度。

3. 在一棵度为3的树中,度为2的结点个数是1,度为0的结点个数是6,则度为3的结点个数是2。

4. 当用长度为n的数组顺序存储一个栈时,若用top==n表示栈空,则表示栈满的条件为top==0。

5. 对序列(49,38,65,97,76,27,13,50)采用快速排序法进行排序,以序列的第一个元素为基准

元素得到的划分结果是[132738]45[50657697]。

6. 对于一棵具有n个结点的树,该树中所有结点的度数之和为n-1。

7. 请指出在顺序表{5、11、23、35、51、64、72、85、88、90、98}中,用折半查找关键码30

需做4次关键码比较。

8. 若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则

第12个元素的存储地址是144。

9. 在一个长度为n 的顺序表中,向第i个元素(1≤ i≤ n+1)之前插入一个新元素时,需要

向后移动n-i+1个元素。

10. 设有两个串p和q,求q在p中首次出现的位置的运算称作模式匹配。

四、程序阅读填空

1. 在顺序表中第 i 个位置插入新元素 x

template int SeqList::Insert (Type & x, int i){

if (i<0||i>last+1||last==MaxSize-1) return 0; //插入不成功

else {

last++;

for( int j=last;j>i;j--)

data[j]=data[j-1];

data[i] = x;

return 1; //插入成功

}

}

2.直接选择排序的算法

template void SelectSort(datalist & list)

{ for(int i=0; i

template viod SelectExchange(datalist & list, const int i){ int k = i;

for(int j=i+1;j< list.CurrentSize;j++)

if(list.Vector[j].getKey()

k=j;//当前具有最小关键码的对象

if(k!=i) Swap(list.Vector[i], list.Vector[k]); //交换

}

五、简答题

1. 线性表可用顺序表或是链表存储,此两种存储表示各有哪些优缺点?

答:顺序表存储的特点是相邻的数据元素的存放地址也相邻;优点是存取效率高,存取速度快;缺点是插入或删除不方便,存储空间不能充分利用。链表存储的特点是相邻的数据元素可以随意存放;优点是插入或删除灵活,存储空间容易管理;缺点是存取效率不高,存取速度较慢。

2. 设有一个输入数据的序列是{46,25,78, 62, 12, 37, 70, 29},试画出从空树起,逐个输入

各个数据而生成的二叉搜索树。

相关文档
最新文档