|
东 北 大 学 继 续 教 育 学 院9 I% D3 S$ ~+ d: ^: \
9 ^6 `9 _" t7 A
数据结构II X 试 卷(作业考核 线上2) A 卷 L' l( s- [( n6 U3 c
5 q7 l+ V! d* s M1 L学习中心: 院校学号: 姓名 1 t6 L, Y" ~) C. t$ t
0 y5 L8 @. {: {. p( R(共 6 页) 1 _/ X. @3 O6 p4 D
总分 题号 一 二 三 四 五 六 七 八 九 十7 |! o8 c' h. z. w
得分 & K: D& {/ _2 z" b. s0 F
一、单选题(共30题,每题2分)
; A0 l; R U% m+ {2 c' Z[ ]1.抽象数据类型的三个组成部分分别为5 i' g7 @& @- |6 b l+ X v
A.数据对象、数据关系和基本操作
9 ` V' h. Z2 J4 d B.数据元素、逻辑结构和存储结构
7 e- B$ x! V2 q7 l C.数据项、数据元素和数据类型2 U" y# C0 y+ u/ V* `
D.数据元素、数据结构和数据类型1 G3 q* H* c: o% V& U7 b
[ ]2.要求相同逻辑结构的数据元素具有相同的特性,其含义为
# O1 T% s& [6 s: G3 X/ d) Y( [( vA. 数据元素具有同一的特点% `6 B5 E! f( S
B. 不仅数据元素包含的数据项的个数相同,而且其对应数据项的类型要一致
' t7 m8 s% M+ _$ bC. 每个数据元素都一样
1 n; M6 k9 G: ]$ M( u0 H. B; a: xD. 仅需要数据元素包含的数据项的个数相同1 Z8 t" }9 l/ V! O. ~& i& ?* T0 B" j2 J
[ ]3.下列各式中,按增长率由小至大的顺序正确排列的是
J# C" e+ d+ s5 YA. ,n!,2n ,n3/2 & `& l) v! _1 a1 O" q
B.n3/2,2n,nlogn,2100! H0 j* ~. ?) R, M. w- i: v& P
C.2n,log n,nlogn,n3/2 - [( U" k8 v6 T% c6 q T# P
D.2100,logn, 2n, nn3 [5 _0 w/ }& n) { j( y- U
[ ]4. 在下列哪种情况下,线性表应当采用链表表示为宜- Q J+ r& l% M% Z: R9 m
A.经常需要随机地存取元素 9 _8 t1 y8 @5 `
B.经常需要进行插入和删除操作
9 u( K& C' f, j2 H+ {4 A7 P0 T C.表中元素需要占据一片连续的存储空间 % G2 E% ?. }9 n9 V( M& d, Z
D.表中元素的个数不变5 o8 X/ I5 X _$ S3 Z# ^/ l
[ ]5.设指针p指向双链表的某一结点,则双链表结构的对称性是
- r" h1 Y2 I; M9 GA. p->prior->next=p->next->next; ) y+ T+ F- F6 n$ d! B
B. p->prior->prior=p->next->prior;
( \8 w0 B& H3 N* n. V* f5 IC. p->prior->next=p-> next->prior;
/ f. G( R7 ^; R+ VD. p->next->next= p->prior->prior;
+ K2 y( Q5 E% ?3 b( B% e[ ]6. 已知指针p和q分别指向某带头结点的单链表中第一个结点和最后一个结点。假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为
. ?6 ?+ p9 e% M) T: ^' d d A. s->next=q;p->next=s->next;
' `) _. Z4 l1 x7 U$ t4 u B. s->next=p;q->next=s->next;
. \: ~. x/ b( JC. p->next=s->next;s->next=q;" @; [6 U6 q @( g% Z
D. q->next=s->next;s->next=p;, b$ K4 p) Z; K& C& _8 B& |
[ ]7. 栈和队列的共同特点是+ r, U; [5 ?4 j% L) g+ U3 N3 W+ v
A.只允许在端点处插入和删除元素+ w [# a' [; ?( }: D
B.都是先进后出
+ k& Q8 F, ~% ~, GC.都是先进先出
- ]: S2 i% M( c8 b& y- `D.没有共同点
" R7 \7 ^3 ~7 ~4 @9 X) A) ^# P[ ]8. 对于链队列,在进行插入运算时.
5 K+ w' T2 u5 |7 v% u% |0 A6 q A. 仅修改头指针
+ [9 i2 ]# ^2 A; y6 c$ NB. 头、尾指针都要修改
0 l, v: F8 B! y/ W/ G1 \ C. 仅修改尾指针
; ?. H6 q0 e4 o9 [! |# q8 m9 zD.头、尾指针可能都要修改9 ^9 c7 K& w; k" h# T% p
[ ]9.设有一个顺序栈的入栈序列是1、2、3,则3个元素都出栈的不同排列个数为
' t/ ^; p7 C" a. S2 p A.4 B.5 C. 6 D. 7
, s0 f6 A; x: `2 [7 f' L$ F[ ]10.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是& D4 j+ \3 ?3 e! a" @
A.A,B,C,D B.D,C,B,A
. n5 K# l7 [- D( _5 VC. A,C,D,B D. D,A,B,C% o5 C6 v+ e! D2 ~( c
[ ]11.表达式a*(b+c)-d的后缀表达式是, ?; J$ B) L' {* X
A.abcd*+- B.abc*+d- C.abc+*d- D.-+*abcd
`6 E: o0 m* {8 L[ ]12.某二叉树的先序序列和后序序列正好相反,则该二叉树的特点一定是
7 f4 @4 H. a. G9 j ?* C/ {) RA. 空或只有一个结点 B.高度等于其结点数 2 l. U; R' @# L* m' L
C. 任一结点无左孩子 D.任一结点无右孩子" |/ X; C) ~5 ]. R
[ ]13.下面的说法中正确的是" r& A o; e* N( q
(1)任何一棵二叉树的叶子结点在种遍历中的相对次序不变。9 B" U5 ]$ j( P% A% n9 Z
(2)按二叉树定义,具有三个结点的二叉树共有6种。
. W# @: b# l2 Z1 F" M: ~1 RA.(1),(2) B.(1)
' X8 ^1 [ b; I9 s: V4 fC.(2) D.(1),(2)都错8 }# ^5 V; K+ U3 V5 t) A- R. E
[ ]14.树有先序遍历和后序遍历,树可以转化为对应的二叉树。下面的
( }0 ^2 d7 @( c h说法正确的是- I+ C: ~( _4 H3 x1 t! N1 @$ [
A.树的后序遍历与其对应的二叉树的先序遍历相同
& m9 f/ g1 _5 I& ?/ h! Z9 fB.树的后序遍历与其对应的二叉树的中序遍历相同' y* w3 p/ r. L9 }
C.树的先序序遍历与其对应的二叉树的中序遍历相同 # f+ V8 C# A; R1 |4 _# T- }
D.以上都不对* [ e- }2 L8 s1 o: c2 E
[ ]15.下列说法正确的是
/ o% O) R' o9 p. V0 i (1)二又树按某种方式线索化后,任一结点均有前趋和后继的线索* F3 {' b2 p6 F7 a$ @
(2)二叉树的先序遍历序列中,任意一个结点均处于其子孙结点前
" Y$ w8 l5 f, c. n( R (3)二叉排序树中任一结点的值大于其左孩子的值,小于右孩子的值
: H0 S9 }) ?% ]2 ?; h2 zA.(1)(2)(3) B.(1)(2)
/ J# t: W# ~$ v* V2 @! s8 X: uC.(1)(3) D.都不对/ D, z: _! e7 W' W& O7 _' P' Z
[ ]16. 二叉树的第k层的结点数最多为
* D' b' r5 h+ _" X* N8 b& g D A.2k-1 B.2K+1 6 Y7 k! s" j7 n$ w
C.2K-1 D. 2k-18 c; J$ ?, v) q: \
[ ]17.以下说法不正确的是; U7 U/ P6 o& w" `% J3 B, t1 n
A.无向图中的极大连通子图称为连通分量
# ~$ j2 V; M3 b2 z( W6 N( I* o B.连通图的广度优先搜索中一般采用队列来暂存刚访问过的顶点
F+ D* p; b7 X2 c C.图的深度优先搜索中一般要采用栈来暂存刚访问过的顶点" ~& z, H5 k- e- i- R
D.有向图的遍历不可采用广度优先搜索
! R* M! G) |& K" g[ ]18.有向图G用邻接矩阵A存储,则顶点i的入度等于A中4 H, J8 x) y% _1 K4 e, a4 Q
A. 第i行1的元素之和 B. 第i列1的元素之和, K* X1 Y; W$ |/ f' r4 V# v4 \
C. 第i行0的元素个数 D. 第i列非0的元素个数
/ B2 f8 ]( f7 _$ h! w[ ]19. 设有6个结点的无向图,该图确保是一个连通图的有效边条数至 a, W* X6 G( t! F$ K$ X
少应是/ `& W# i; h& L( S; y+ ]
A.5 B.6 C.7 D.8
* l6 }7 F! `9 Z$ I A* l' Y X [ ]20..下图的邻接表中,从顶点V1 出发采用深度优先搜索法遍历该图,则可能的顶点序列是 - Q/ D/ F; l/ |& z0 n1 \9 R
7 `, ]2 i: \9 j8 x5 d7 D$ Z2 v
A. V1V2V3V4V5 B. V1V2V3V5V4& _, N5 W3 P. A/ G: ~6 e
C. V1V4V3V5V2 D.V1V3V4V5V2 . ?; ]8 }- {: |$ g8 |; ~
[ ]21.关键路径是事件结点网络中2 S9 Q9 w0 D# y
A.从源点到汇点的最长路径 B.从源点到汇点的最短路径
" U2 f" V: B7 y+ m C.最长的回路 D.最短的回路9 K! y7 ]4 }# {" \. d$ \
[ ]22.设哈希表长为14,哈希函数H(key)=key%11,表中已有数据的关键字为15,38,61,84,四个,现将关键字为49的结点加到表中,用二次探测再散列法解决冲突,则放入的位置是
5 |, l9 E: z" F1 {0 x4 G A.8 B.3 C.5 D.9" [. E7 H% D9 ?( u- y2 z2 a" Q( S
[ ]23..在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应调整以使其平衡,所作的平衡旋转是
, o5 j4 S1 D; ^, lA. LL型 B. LR型 C. RL型 D. RR型 m: o) j8 z/ m
[ ]24.下列排序算法中,在待排序数据已基本有序时,效率最高的排序方法是2 T3 M' b2 u* H: C6 E
A.插入排序 B.选择排序
- y- S/ G3 J. K l/ N# I6 kC.快速排序 D.堆排序
7 w8 w9 F5 u" D+ V8 d[ ]25.下列排序算法中,时间复杂度不受数据初始状态影响,恒为0(nlog2n)是
. }0 z0 ?3 Z8 [$ x: X8 q' `) wA. 堆排序 B. 冒泡排序 F% q" _: W3 L( R
C. 直接选择排序 D. 快速排序
- s- U- Q' X3 g j[ ]26. 有一程序段:i=1;WHILE(i<n) i=i*2;其中带下划线语句的执行次数的数量级是
$ f6 h+ j' J7 X, k/ C6 aA. O(n) B. O(log2n) / T$ W r" |0 G1 g4 @
C. O(nlog2n) D. O(n2)6 d6 P5 z/ d' v' O7 ?& k
[ ]27.无头结点的链队列Q为空的条件是
1 a2 R/ {) h1 |8 p0 o. MA. Q->front->next==Q->real=NULL
% c7 Y7 @4 W" b) f# \/ K" cB. Q->front==Q->real<>NULL 3 V' F7 r' r1 N: C
C. Q->real==Q->front=NULL
# Q8 c* Q2 j, ^( z9 ZD. Q->real->next==Q->front<>NULL
; a5 {( O% w/ f! _/ {[ ]28. 有向图G可拓扑排序的判别条件是
! N$ O( ?* P1 {! S9 g( n: NA. 不存在环 B. 存在环
5 t) u$ p% d9 D1 z/ _3 R# {/ cC. 存在入度为零的结点 D. 存在出度为零的结点 7 I* P0 O2 v. S' n- Q* _7 B! ]" y$ q
[ ]29. 对n个记录的文件进行快速排序,所需要的辅助存储空间. ^" [! H' e4 z
A. O(1) B. O(n) C. O(1og2n) D. O(n2)& m7 b4 R4 B: N- ]( u8 `% r6 E r4 G% W
[ ]30. 下列排序算法中,在待排序数据已基本有序时,效率最高的排序方法是) q, [0 ]8 u/ @2 u( H4 A
A.插入排序 B.选择排序 ; p: i% n7 s+ e/ F6 v. k7 I8 n
C.快速排序 D.堆排序
! x* ]/ V3 Y" L3 g* n8 w二、综合题(共4题,每题10分)
6 `* E3 J" }% D0 {/ x, Y31、阅读算法,在横线处填入语句或注释。5 x$ W6 J9 `& Q+ k' |$ ]+ O
void exchange_L( Linklist &L,int m ) { / ?2 W$ F) O, z! h
// 带头结点的单链表中前m个结点和后n个结点的整体互换- ^' |0 T/ @5 J* d
if ( m && L->next ) { // 链表非空3 ?4 [+ d, A" e- g( O
p = L->next; . w' @; A$ c' z. i& U7 O
(1)// k取值, A% |& U4 s. t/ ?& v7 t X
while( k< m && p ) { //(2)& X7 h7 U5 [; R2 [9 R
p = p->next; ++k;
- L1 Q5 R2 }0 O' N. x: L8 ] } // while , v# p6 |( i! V
if (p && (3)) { // n!=0 时才需要修改指针
% r1 V* `. q& i* ~* Y" }' I6 { ha = L->next; // 以指针 ha 记a1结点的位置$ d0 @) ?5 F. ~" p* L
L->next= p->next; // 将 b1 结点链接在头结点后. f! K9 u+ ^2 P t+ y _; A9 k
p->next =(4); // 设am的后继1 Q1 J+ Y% N: X& l3 d+ `4 o
: @; B* d% s4 Y: M$ k q = L->next; // 令q 指向 b1结点
7 o3 _% _% K. n+ C1 N; s while (q->next)
. h6 B/ }& |% P q = q->next; // 查找 bn 结点
! s7 K2 W, ~8 I! z7 @% T c; {, d q->next =(5)//将第 a1 结点链接到 bn 结点之后
( \; F: R0 T; |2 G, S* T2 G } // if(p)9 h( X P- S1 D, ]2 l
} // if(m)
5 E. P& @7 V( A( @. Q. x } // exchange_L
& X7 G. v- o4 w- u' H& l/ C4 x( h+ Z
. O8 g0 s; F- V- A$ r. m! C8 a( W/ @1 U* l8 n# ~; h
# S0 ~- R$ Z0 ~# X0 Y; a% x( Q V) X9 N
* u( h# n: \5 s# l P0 i
+ u1 q; f" Z2 d1 V. ]
g# T$ o7 d# F8 F0 M( f9 q+ m
+ ?- O: g6 u5 ]6 t' s1 z; _( {; [! ]* f0 h; f
5 E7 ]1 |2 P( _9 O5 D( N
32.一个仅包含二元运算符的算术表达式,以二叉链表形式存储在二叉树T中,设计算法F1实现求值,并指出遍历的方式。
- d# H4 u/ X2 }% U+ |! O3 s- h/ a$ t0 z& @9 I$ `) P" J3 b9 i& R i
8 [/ {% g4 }, H& \5 i
! p2 t9 ~2 w t+ u# d" ^6 q' |4 m
2 u' ]4 W; s" A9 u0 f/ y1 a
1 k% A5 B& {0 `2 _9 N# X* S j
) k* ~) N+ `/ d, a Y+ ?2 f% P) b6 R3 Z+ Z2 i0 R% ~, z
& w* t6 k& B. h" ], D {* i+ Z+ F( I) I$ [' M( ~. q! `6 n* q
+ E# m a0 s+ p% {! `
$ K5 f. Y4 g" y" z# H4 Z- t {' \5 d3 g, ~1 B$ [9 J; Q% L, n
" w: l$ X$ i! @3 a& z
$ F6 n( K6 w! h' ]6 j$ T0 X
0 b, O9 b; k, M% J7 g33.设计算法实现以逆邻接表为存储结构的有向图的拓扑排序。- ^% q3 m1 R$ h+ ]# U( }
逆邻接表存储结构定义如下:
( [& y. ~& O- r1 y顶点结构 表结点结构# c: x9 ~. J3 l! u7 F
vexdata firstin 1 k5 O; r4 W* f% V: w
adjvex nfo firstarc5 T4 b4 C* t: O
! E* r4 X F' K8 [) e- X7 f* N% m1 d7 T3 p' p1 u! p
q8 ?' A8 X9 I6 B' \; W; a) y
, R5 G8 B8 D% o x; |
$ H' d p9 S% S+ ?- _
7 j$ m$ F. V! B z; Z- w, z. k4 T4 l1 j8 \
+ G) m! u0 k* i5 X7 d4 ~, P8 o
5 q# P- ]# o7 |6 }8 L3 u& k# ]0 S! V* {4 _& ^3 ]8 w, q% Y
& u: s( a) J& @3 t
7 O4 p9 I2 X6 M0 V; ]! Z
" Q+ e6 t+ L" u8 U6 e9 L y6 w6 {) s: j1 l0 T) u \
/ X/ N% e5 N9 ^6 @/ f; p3 d3 f$ L' W* P: }4 K' q$ s
34. 设哈希表长为13,采用线性探测法解决冲突,哈希函数定义为:H(key)=key%13。 {5 H [0 B( _( ^$ F
试求:(1)填上依次插入关键字25,20,36,15,41,52,29,72,67后的哈希表。
/ N3 e' w$ e. D% [* V* Y(2)计算等概率情况下,查找成功的平均查找长度。
5 y! V, y& z+ N! l$ q# ?2 X4 N1 b& W( U
% e- g5 H E& A# F4 \
* _7 U$ U: P% z6 c
2 h; A, D" j7 \, p1 G- O# n3 w9 m& N
# ?0 @3 f9 `3 H7 v# X8 \; D5 K
3 g# k( t& }5 ]- n4 @1 ]; P* i; N
) T1 `0 s0 o8 D# _& `# _
# q3 j5 h/ j1 _2 E- b* i
) |/ m5 e* G* p; e+ e) r8 {& \6 q! B: N2 Y, g% t: s
7 G$ e: ~4 c+ o/ z; m
0 j+ y5 n& u, G
- Q$ x& o3 k! H! c' \6 O& s8 ~) [; n
: ~$ Q' c$ L5 | ], D
3 c7 t$ [' @2 t$ L* f
$ M$ X8 {$ K; n3 \
$ m% G, I, p& N C; q" a- n' Z0 g/ G' \$ p5 \
|
|