全国2010年1月自考数据结构导论考试试题,答案,笔记
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.当利用大小为 n 的数组顺序存储一个队列时,该队列的最大容量为
(B)
A.n-2
B.n-1
C.n 11.有关插入排序的叙述,错误.的.. 是 ( C A. 插入排序在最坏情况下需要 O(n2)时间
D.n+1 )
B. 插入排序在最佳情况可在 O(n) 时间内完成
C.插入排序平均需要 O(nlog 2n)时间 D. 插入排序的空间复杂度为 O(1) 12.有关树的叙述正确的是 ( C ) A. 每一个内部结点至少有一个兄弟
19.在栈结构中,允许插入的一端称为 __栈顶 __________ 。 注:队列允许插入的一端叫队尾。
20.从一个长度为 n 的 顺序表中 删除第 i 个元素 (1 ≤ i ≤时n,) 需向 前 移动 n-i__ 个元素 。 注:向后移动 n-i+1 个元素。
21.一个栈的输入序列是 1, 2, 3, … , n,输出序列的第一个元素是 n,则第 i 个输出元素为 __n-i+1________ 。
2. 最小生成树和最优路径选着法 一样,记住两点之间只有一条线连接。 注意: 一个点出去的最短不代表到下一个点最短, 要 把两条路径加起来比较一下。
33.什么是堆 ?写出对应于序列 (10, 20, 7, 75, 41, 67, 3, 9, 30, 45)的初始堆 (堆顶元素取最小值 )。
答: 1 堆是一键值序列 {k 1,k2,… kn}, 对所有 i=1,2,3 … n/2 满足 ki ≤k 2i
有 1 个存储地址空间,则 a45 的地址为 _____35_______。 解; k=0+4 ( 2*10-4+1 )/2+5-4=35
注: 1,使用下列公式必要前提是,矩阵式 n*n 的,也就是方矩阵。
上三角情况: 当 i≤ J 时(前小于等于后) 所求地址 =首元素所占地址 +i(20n-i+1)/2+j-i 下三角情况: 当 i≥j 时 所求地址 =首元素所占地址 +i(i+1)/2+j
//Q 是队列,元素是二叉树的结点指针,容量足够大
If (p==null) return (1);
QueueInit(Q),Queuelint(Q,p);
// 初始化队列,根节点入队
While (!QueueEmpty(Q))
{p=QueueOut(Q);
// 出队
If ( p->lchild&&!tag )QueneIn(Q,p->lchild) // 左孩子入队
A. 顺序文件
B. 索引文件
C.散列文件
D.多关键字文件
2.某二叉树的后根遍历序列为 dabec,中根遍历序列为 debac,则先根遍历序列为( D )
A.acbed
B.becab
C.deabc
D.cedba
3.含有 n 个结点的二叉树用二叉链表表示时,空指针域个数为
(C )
A.n-1
B.n
C.n+1
A. 以顺序方式存储
B. 以链式方式存储
C.以顺序方式存储,且结点按关键字有序排列
D. 以链接方式存储,且结点按关键字有序排列
9.在表长为 n 的顺序表上做删除运算,其平均时间复杂度为
(B)
A.O(1) C.O(nlog 2n)
B.O(n) D.O(n 2)
注:在双向循环链表中,删除最后一个结点 的时间复杂度为 O(1)
二分法 -冒泡
注:若只有尾指针,那么入和出都为
O(1)
6.下述几种排序方法中,要求内存量最大的是 ( C )
A. 插入排序
B. 快速排序
C.归并排序
D.选择排序
7.对 n 个不同值进行冒泡排序,在元素无序的情况下比较的次数为
(D )
A.n-1
B.n
C.n+1
D.n(n-1) / 2
8.对线性表进行 二分查找 时,要求线性表必须 ( C )
4. 调整位置即可。
75
30
3
四、算法设计题 (本大题共 2 小题,每小题 7 分,共 14 分 ) 34.二叉树按 二叉链表形式 存储,编写一个算法判别给定的二叉树是否为完全二叉树。
Int Judgecomplete(Bitree bt)
// 判断是否是二叉树,是返回 1,否返回 0
Int tag=0,Bitree p=bt,Q[];
题 31 图
32. 下述矩阵表示一个无向网,画出该无向网,并构造出其最小生成树。
0
1
2
3
4
5
答: 1 连通图为:
0
0
1
6
2
1
1
5
3
2 3
6 4
4
6
5
5 3
5 2
4 5
2.最小生成树为:
0
1
1
5
3
2
3
3
2 4
5
解题思路: 1.画连通图时的一个技巧是,数字 基本按顺序写, 0 为最高端。然后根据下标找 出路线即可。
三、应用题 (本大题共 5 小题,每小题 6 分,共 30 分) 29.有一字符串的次序为 -3*y+a / y! 2,试利用栈将输出次序改变为 ( 用 push(x)表示 x 进栈, pop(x)表示 x 退栈 )
3y*-ay ! 2/+,试写出进栈和退栈的操作步骤。
解题技巧剖析: 1. 根据 后进先出 原则。 3.把原始字符串与要改变次序的字符串写成如下格式。
全国 2010 年 1 月高等教育自学考试 数据结构导论试题 课程代码: 02142
一、单项选择题 (本大题共 15 小题,每小题 2 分,共 30 分 )
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未
选均无分。
1.下述文件中适合于磁带存储的是(
A)
C.替换是串的一种重要运算
D. 串既可以采用顺序存储,也可以采用链式存储 15. 对称矩阵 A[N][N] , A[1][1] 为首元素,将下三角
(包括对角线 )元素以 行 优先顺序存储到一维数组元素
T[1] 至
T[N(N+1) / 2]中, 则任一上三角元素 A[i][j] 存于 T[k] 中 ,下标 k 为 ( B )
Else tag=1;
}//while return 1 ;
}//JudgeComplete
35. 试写出直接插入排序算法。
Void StraightInseartSort (list r, int n)
// 对顺序表直接进行插入排序
{ int i , j; For (i=2,i<=n,i++)
{ R[0]=R[i]; j=i-1 ;
A .i (i-1) / 2+j
B. j(j-1) / 2+i
C .i (j-i) / 2+1
D. j(i-1) / 2+l
二、填空题 (本大题共 13 小题,每小题 2 分,共 26 分 )
请在每小题的空格中填上正确答案。错填、不填均无分。 16.下列程序段的时间复杂度为 ____O(n 3)________。
Else{ if (p->lchild) return 0; Else tag=1;
// 前面已有节点为空,此结点不为空 // 首次出现结点为空
If (p->right&&!tag) QueneIn(Q,p->rchild) // 又孩子入队
Else{if (p->rchild) return 0;
22. 循 环 队 列 被 定 义 为 结 构 类 型 , 含 有 三 个 域 : data 、 front 和 rear , 则 循 环 队 列 sq 为 空 的 条 件 是 __sq.rear=sq.front__________ 。
23.一个 10 阶对称矩阵 A,采用 行 优先顺序压缩存储 上三角元素 , a00 为第一个元素,其存储地址为 0,每个元素占
由题意可以得出如下初始堆
9 \
20
Ki ≤k 2i+1
3
7
41
67
10
解题思路: 1. 先将给出的序列以完全二叉
树依次写出。
2ቤተ መጻሕፍቲ ባይዱ 然后从最右边的看起, 若要求 最小根,那么找小的作为根。 若要求最大根, 那么找最大的 作为根。
3. 总之,求最大根, 从总根开始, 结点根依次减小,求最小根, 结点根逐渐减大。
for(i=1 ;i<=n ; i++)
for(j=1 ; j<=n ; j++)
for(k=1 ; k<=n ; k++) s=i+j+k ;
17. 在数据结构中,各个结点按逻辑关系互相缠绕,
任意 两个结点可以 邻接的结构 称为 __图状结构 __________ 。
18.在单链表中, 存储每个结点有两个域, 一个是 数据域 ,另一个是 指针域 ,指针域指向该结点 ___直接后继 _____的。 注:数据域 ---前接前趋,指针域 —直接后继
D.n+2
注:子域为 2n 个,有 n-1 个孩子。
4.在一个图中,所有顶点的度数之和与图的边数的比是
(C)
A.1 ∶ 2
B.1∶ 1
C.2 ∶ 1
D.4∶ 1
5.长度为 n 的链队列用单循环链表表示,若只 设头指针 ,则 出队 操作的时间复杂度为 ( A )
A.O(1) C.O(n)
(入队)
B.O(1og 2n) D.O(n 2)
2.
- 3 * y + a / y ! 2 ○A
2.写一点,划一点原则。
3 y * - a y ! 2 / + ○B
○ ○ 3. 例如: enter-> -,3 exit ->3, 此时,剩下 -。 对应着,把 A 里已输入的 –3,删掉。然后把 B 标明已产生排序,然
Push(-)push(3)pop(3) 注:退的时候,从后往前划。
解题要点: 1.先确定最高分界点左 面有几个圈,然后确定分界点。如 本题,分界点左面有 4 个圈,则 32 33 34 35 36 37 38 39 40 — 36 为分 界点 2.以根节点为界,左孩子小于又孩 子。
3.若出现连续左孩子,或连续又孩 子,注意左孩子连续减小原则,又 孩子连续增大原则。 4.圈的之间差值最小原则。
26.在图中, 第一个顶点 和最后一个顶点 相同的路径称为 __(简单)回路或(简单)环 __________。
27.动态查找中两个元素 X , Y 存入同一个散列表时 , X 、Y 键值相同 ,则这种情况称为 ______冲突 _____。
28.堆排序需 _____一 _______个记录大小的辅助存储空间 。
后以此类推。
30. 已知一棵二叉树的先根遍历序列为 答:由题可知,该二叉树为:
ABCDEGHF ,中根遍历序列为 CBEDAGFH ,画出该二叉树。
○A
○B
○G
○C
○D
○H
○E
○F
31.题 31 图中二叉排序树的各结点的值为 40
36
32~ 40,标出各结点的值。
32
40
35 33
34
37 38 39
24.对于一棵满二叉树,若有 m 个叶子,则树中 结点 数为 ___2m-1_________ 。 (2m-1 又称为哈夫曼树 )
25.含有 n 个顶点和 n-1 条边的连通图 G 采用 ____邻接表 ________存储结构较省空间 。 n*(n-1) 为有向图,为稀疏矩阵,采用邻接表。 n* ( n-1)/2 为无向图,为对称矩阵,采用邻接矩阵。
A.rear=rear+1
B.rear=(rear+1) %(m-1)
C.rear=(rear+1) % m
D.rear=(rear+1) % (m+1)
14.关于串的的叙述,不正.确..的是 ( B )
A. 串是字符的有限序列
B. 空串是由空格构成的串
注:空格串是只包括空格的串,空格串是有长度的, ,而空串没有长度。
while(R[0].key<R[j].key) {R[j+1]=R[j];
j--; }
R[j+1]=R[0]; } }
//n 为表长,从第二个记录起进行插入。 // 第 i 个值赋值为岗哨 // 与岗哨比较,直至键值不大于岗哨值 // 将第 J个值赋给第 J+1个值
// 将第 i 个值插入到系列中
----- 快速排序需要 o(nlog2n )
树:是 n 各节点的有限集合。 1. 当 n=0 时,称为空树。 2. 当 n>0 时, 有且仅有一个根 的结点。
B. 每一个叶结点均有父结点 C.有的树没有子树
D. 每个树至少有一个根结点与一个叶结点。 (有且仅有一个结点 ) 13.循环队列存储在数组元素 A[0] 至 A[m] 中,则入队时的操作为 ( D )