(A )数据的逻辑结构
(B )数据的存储结构
《数据结构》专升本考试试题
(2015 年 3 月)
(C )数据的逻辑结构和存储结构
12.算法分析的两个主要方面是(
(A )空间复杂度和时间复杂度 (C )可读性和文档性 (D )数据的逻辑结构、存储结构及其基本操作 )o
(B )正确性和简单性
(D )数据复杂性和程序复杂性
一、单项选择题(本大题共 20小题,每小题2分,共40分)
1 •对于一个算法,当输入非法数据时,也要能作出相应的处理,这种要求称为( (A) 正确性 (B) 可行性 (
C) 健壮性
2 •设S 为C 语言的语句,计算机执行下面算法时, for(i=n-1 ; i>=0 ; i--) for(j=0 ; j<i ; j++) S ; (A) n 2 (B) O( nlgn) (C) O( n) (D) O(n
3 •折半查找法适用于(
)o (A )有序顺序表 (C )有序顺序表和有序单链表都可以 4 •顺序存储结构的优势是( )o (A )利于插入操作 (B ) (C )利于顺序访问 (D ) (D) 输入性 算法的时间复杂度为(
13.
若一个线性表中最常用的操作是取第i 个元素和找第i 个元素的前趋元素,则采用( 存储方式最节省时间。
(A )顺序表 (B )单链表 (C )双链表 (D )单循环链表
14.
在一个长度为n 的顺序表中,在第i 个元素之前插入一个新元素时,需向后移动( 个元素。
(A ) n-i (B ) n-i+1 (C ) n-i-1 ( D i 15 .非空的循环单链表head 的尾结点p 满足( )。
2
) (B ) (D ) 有序单链表 无限制
(A ) p->n ext==head (B ) p-> next==NULL
(C ) p==NULL (D ) p==head
16. 一个栈的输入序列为: a ,b ,c ,d ,e ,则栈的不可能输出的序列是( )o
(A ) a,b,c,d,e (B ) d,e,c,b,a
(C ) d,c,e,a,b (D ) e,d,c,b,a
17.设SUBSTR(S,i,k)是求S 中从第i 个字符开始的连续k 个字符组成的子串的操作,则对 5 •深度为k 的完全二叉树,其叶子结点必在第( (A ) k-1 (B ) k (C ) k-1 和 k (D ) 6•具有60个结点的二叉树,其叶子结点有12个, (A ) 11 ( B ) 13 (C ) 48 ( D 37 利于删除操作 利于随机访问 )层上。
1至k 则度为1的结点数为(
7.图的Depth-First Search(DFS) 遍历思想实际上是二叉树( (A )先序 (B )中序 (C )后序 (D )层序 8 .在下列链队列Q 中,元素a 出队的操作序列为( )遍历方法的推广。
S= ' Beijing&Nanjing ',SUBSTR(S,4,5)=( ) (A )‘iji ng ' (B )' jing& ' (C )' ingNa ' (D ) 'ing&N
'
18.广义表((a),a) 的表尾是( )o
(A ) a
(B ) (a) (C )() (D ) ((a)) 19. 在一棵具有5层的满二叉树中结点总数为( )o (A ) 31
(B ) 32 (C ) 33
(D ) 16
20. 如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是(
)o
(A )完全图
(B )连通图
(C )有回路
(D ) —棵树
二、填空题(本大题共20个空,每空2分,共40分)
Q (A ) (B ) (C ) (D ) p=Q.fr ont->n ext; p->n ext= Q.front->n ext; p=Q.fr ont->n ext; Q.front->n ext=p->n ext; p=Q.rear- >n ext; p->n ext= Q.rear- >n ext; p=Q->n ext; Q->n ext=p->n ext; 1 .逻辑结构决定了算法的 ____________ ,而存储结构决定了算法的 _____________ o 2. _______________________ 栈和队列都是一种 ______________________ 的线性表,栈
和删除只能在 ______________ 进行。
3. 线性表(a 1,a 2,…,a n )的顺序存储结构中,设每个单元的长度为L,元素a i 的存储地址LOC
4. 已知一双向链表如下(指针域名为next 和prior):
9. Huffman
树的带权路径长度WP 等于( (A )除根结点之外的所有结点权值之和 (C )各叶子结点的带权路径长度之和
)域存储后继结点的地址。
(C ) rchild (D ) root )o
10•线索二叉链表是利用( (A ) Ichild (B ) data 11 •研究数据结构就是研究(
(B ) (D ) ) 所有结点权值之和 根结点的值 现将p 所指的结点插入到x 和y 结点之间,其操作步骤为: ________________________
5 . n 个结点无向完全图的的边数为 ________________________ , n 个结点的生成树的边
为 ____________________ o
(2)对(1)中所建立的二叉排序树进行中序遍历,写出遍历序列
5.已知一网络的邻接矩阵如下, 求从顶点 A 开始的最小生成树。
(6分)
A B C D E F
A
6 5
1
B 6
5 3
C 5
7
2 D 1 5 7
6 4
E 3
6
6 F
2 4
6
2 .给定表(19,14,22,15,20,21,56,10 )。
(6 分)
(1)按元素在表中的次序,建立一棵二叉排序树。
7 •已知二叉树的中序遍历序列为 BCA 后序遍历序列为 CBA 则该二叉树的先序遍历序列 为 _________________ ,层序遍历序列为 __________________ 。
8 •数据的存储结构可用四种基本的存储方法表示, 它们分别是 ___________________________
9.在图形结构中,每个结点的前驱结点数和后续结点数可以 _______________________________
10•写出带头结点的双向循环链表 L 为空表的条件 ______________________________。
11._______________________________________ 哈夫曼树是其树的带权路径长度 的二叉树。
12.________________________________ n 个顶点的连通图至少有 条边。
三、应用题(本大题共6小题,共40分)
1.设散列函数 H (k )=k % 13,设关键字系列为{22,12,24,6,45,7,8,13,21}, 要求用线性探测
法处理冲突。
(8分)
(1)构造 HASH 表。
3.已知一维数组中的数据为(18,12,25,53,1匕)
有n 个元素的插入排序的时间复杂度是多少? ,试写出插入排序(升序)过程。
并指出
(6分)
4.已知二叉树的先序遍历序列为 ABCDEFGI ■中序遍历序列为 CBEDFAGH 画出该二叉
树。
(5分)
(2)分别求查找成功和不成功时的平均查找长度。
L->slist[k]=
(2) ;
return OK; }
五、算法设计题(本大题共2小题,每小题10分,共20分)
1 •编写算法,实现带头结点单链表的逆置算法。
2 •设顺序表va 中的数据元数递增有序。
试写一算法,将 x 插入到顺序表的适当位置上,
以保 持该表的有序性。
四、程序分析填空题(本大题共 2小题,每小题5分,共10分)
1 •函数GetElem 实现返回单链表的第i 个元素,请在空格处将算法补充完整<
int GetElem(LinkList L,int i,Elemtype *e){
LinkList p
; int j ;
p=L- >n ext;j=1; while(p&&j<i){
(1) ;++j;
}
if(!p||j>i) return ERROR; *e=⑵; return OK;
}
2 •函数ListDelete_sq 实现顺序表删除算法,请在空格处将算法补充完整。
int ListDelete_sq(Sqlist *L,int i){ int k;
if(i<1||i>L->length) return ERROR; for(k=i-1;k<L->le ngth-1;k++)
(2)计算带权路径长度WPL
(3)求 A 、B 、C 、D E 、F 的 Huffman 编码。
(9分,要有过程)
(1)
6 •已知数据六个字母及在通信中出现频率如下表:
把这些字母和频率作为叶子结点及权值,完成如下工作 (1)画出对应的Huffman 树。