《数据结构》练习题库及答案解析

习题2 线性表、栈、队列

一、单项选择题

1. 线性表是___A_____。

A.一个有限序列,可以为空

B.一个有限序列,不可以为空

C.一个无限序列,可以为空

D.一个无限序列,不可以为空

2. 在一个长度为n的顺序表中删除第i个元素(1<=i<=n)时,需向前移动B 个元素。

A.n-i

B.n-i+l

C.n-i-1

D.i

3. 线性表采用链式存储时,其地址____D____。

A.必须是连续的

B.一定是不连续的

C.部分地址必须是连续的

D.连续与否均可以

4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较_____C___个元素结点。

A.n/2

B.n

C.(n+1)/2

D.(n-1)/2

5. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是__D__。

A.p->next=s; s->prior=p;

p->next->prior=s; s->next=p->next;

B.s->prior=p; s->next=p->next;

p->next=s; p->next->prior=s;

C.p->next=s; p->next->prior=s;

s->prior=p; s->next=p->next;

D.s->prior=p; s->next=p->next;

p->next->prior=s; p->next=s;

6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为___A_____。6.

A.p->next=p->next->next;

B.p=p->next;

C.p=p->next->next;

D.p->next=p;

7. 在一个长度为n的顺序表中向第i个元素(0

A.n-i

B.n-i+l

D.i

8. 在一个单链表中,已知q结点是p结点的前趋结点,若在q和p之间插入s结点,则须执行B。

A.s->next=p->next; p->next=s

B.q->next=s; s->next=p

C.p->next=s->next; s->next=p

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

9. 以下关于线性表的说法不正确的是___C___。

A.线性表中的数据元素可以是数字、字符、记录等不同类型。

B.线性表中包含的数据元素个数不是任意的。

C.线性表中的每个结点都有且只有一个直接前趋和直接后继。

D.存在这样的线性表:表中各结点都没有直接前趋和直接后继。

10. 线性表的顺序存储结构是一种___A____的存储结构。

A.随机存取

B.顺序存取

C.索引存取

D.散列存取

11. 在顺序表中,只要知道___D____,就可在相同时间内求出任一结点的存储地址。

A.基地址

B.结点大小

C.向量大小

D.基地址和结点大小

12. 在等概率情况下,顺序表的插入操作要移动__B____结点。

A.全部

B.一半

C.三分之一

D.四分之一

13. 在___C___运算中,使用顺序表比链表好。

A.插入

B.删除

C.根据序号查找

D.根据元素值查找

14. 在一个具有n个结点的有序单链表中插入一个新结点并保持该表有序的时间复杂度是__B_____。

A.O(1)

B.O(n)

C.O(n2)

D.O(log2n)

15. 设有一个栈,元素的进栈次序为A, B, C, D, E,下列是不可能的出栈序列_____C_____。

A.A, B, C, D, E

B.B, C, D, E, A

C.E, A, B, C, D

D.E, D, C, B, A

16. 在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为__C____。

A.top不变

C.top--

D.top++

17. 向一个栈顶指针为hs的链栈中插入一个s结点时,应执行____B__。

A.hs->next=s;

B.s->next=hs; hs=s;

C.s->next=hs->next; hs->next=s;

D.s->next=hs; hs=hs->next;

18. 在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队满的条件为____D____。

A.rear%n = = front

B.(front+l)%n = = rear

C.rear%n -1 = = front

D.(rear+l)%n = = front

19. 在具有n个单元的顺序存储的循环队列中,假定front和rear分别为队头指针和队尾指针,则判断队空的条件为____C____。

A.rear%n = = front

B.front+l = = rear

C.rear = = front

D.(rear+l)%n = = front

20. 在一个链队列中,假定front和rear分别为队首和队尾指针,则删除一个结点的操作为__A______。

A.front=front->next

B.rear=rear->next

C.rear=front->next

D.front=rear->next

二、填空题

1. 线性表是一种典型的___线性______结构。

2. 在一个长度为n的顺序表的第i个元素之前插入一个元素,需要后移__n-i+1__个元素。

3. 顺序表中逻辑上相邻的元素的物理位置__相邻______。

4. 要从一个顺序表删除一个元素时,被删除元素之后的所有元素均需向__前___移一个位置,移动

过程是从_前____向_后____依次移动每一个元素。

5. 在线性表的顺序存储中,元素之间的逻辑关系是通过__物理存储位置_____决定的;在线性表的

链接存储中,元素之间的逻辑关系是通过__链域的指针值_____决定的。

6. 在双向链表中,每个结点含有两个指针域,一个指向___前趋____结点,另一个指向____后继___

结点。

7. 当对一个线性表经常进行存取操作,而很少进行插入和删除操作时,则采用___顺序__存储结构

为宜。相反,当经常进行的是插入和删除操作时,则采用__链接___存储结构为宜。

8. 顺序表中逻辑上相邻的元素,物理位置__一定_____相邻,单链表中逻辑上相邻的元素,物理位

置___不一定____相邻。

9. 线性表、栈和队列都是__线性_____结构,可以在线性表的___任何___位置插入和删除元素;对

于栈只能在___栈顶____位置插入和删除元素;对于队列只能在___队尾____位置插入元素和在___队头____位置删除元素。

10. 根据线性表的链式存储结构中每个结点所含指针的个数,链表可分为__单链表_______和__双链

表_____;而根据指针的联接方式,链表又可分为__循环链表______和__非循环链表______。

11. 在单链表中设置头结点的作用是__使空表和非空表统一______。

12. 对于一个具有n个结点的单链表,在已知的结点p后插入一个新结点的时间复杂度为_o(1)_____,

在给定值为x的结点后插入一个新结点的时间复杂度为__o(n)_____。

13. 对于一个栈作进栈运算时,应先判别栈是否为__栈满_____,作退栈运算时,应先判别栈是否为

_栈空______,当栈中元素为m时,作进栈运算时发生上溢,则说明栈的可用最大容量为___m____。为了增加内存空间的利用率和减少发生上溢的可能性,由两个栈共享一片连续的内存空间时,应将两栈的__栈底_____分别设在这片内存空间的两端,这样只有当__两个栈的栈顶在栈空间的某一位置相遇_____时才产生上溢。

14. 设有一空栈,现有输入序列1,2,3,4,5,经过push, push, pop, push, pop, push, push后,输出

序列是___2 3______。

15. 无论对于顺序存储还是链式存储的栈和队列来说,进行插入或删除运算的时间复杂度均相同为

____O(1)______。

习题5 树与二叉树

一、单项选择题

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

A. 4

B. 5

C. 6

D. 7

2. 假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( B )个。

A. 15

B. 16

C. 17

D. 47

3. 假定一棵三叉树的结点数为50,则它的最小高度为( C )。

A. 3

B. 4

C. 5

D. 6

4. 在一棵二叉树上第4层的结点数最多为( D )。

A. 2

B. 4

C. 6

D. 8

5. 用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点R[i]若有左孩子,其左孩子的编号为结点(B )。

A. R[2i+1]

B. R[2i]

C. R[i/2]

D. R[2i-1]

6. 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为(D )。

A. 24

B. 48

C. 72

D. 53

7. 线索二叉树是一种(B )结构。

A. 逻辑

B. 逻辑和存储

C. 物理

D. 线性

8. 线索二叉树中,结点p没有左子树的充要条件是( B )。

A. p->lchild=NULL

B. p->ltag=1

C. p->ltag=1 且p->lchild=NULL

D. 以上都不对

9. 设n , m 为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是( B )。

A. n在m右方

B. n在m 左方

C. n是m的祖先

D. n是m的子孙

10. 如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的( B )。

A. 中序

B. 前序

C. 后序

D. 层次序

11. 欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用( A )存储结构。

A. 三叉链表

B. 广义表

C. 二叉链表

D. 顺序

12. 下面叙述正确的是(D )。

A. 二叉树是特殊的树

B. 二叉树等价于度为2的树

C. 完全二叉树必为满二叉树

D. 二叉树的左右子树有次序之分

13. 任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序( A )。

A. 不发生改变

B. 发生改变

C. 不能确定

D. 以上都不对

14. 已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为( B )。

A. 1

B. 2

C. 3

D. 4

15. 根据先序序列ABDC和中序序列DBAC确定对应的二叉树,该二叉树(A )。

A. 是完全二叉树

B. 不是完全二叉树

C. 是满二叉树

D. 不是满二叉树

二、判断题

1. 二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树。(×)

2. 二叉树的前序遍历中,任意结点均处在其子女结点之前。(√)

3. 线索二叉树是一种逻辑结构。(×)

4. 哈夫曼树的总结点个数(多于1时)不能为偶数。(√)

5. 由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。(×)

6. 树的后序遍历与其对应的二叉树的后序遍历序列相同。(√)

7. 根据任意一种遍历序列即可唯一确定对应的二叉树。(√)

8. 满二叉树也是完全二叉树。(√)

9. 哈夫曼树一定是完全二叉树。(×)

10. 树的子树是无序的。(×)

三、填空题

1. 假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为__3___,树

的深度为__4___,终端结点的个数为__6____,单分支结点的个数为____1__,双分支结点的个数为____1__,三分支结点的个数为____1___,C结点的双亲结点为___A____,其孩子结点为____F___和_____G__结点。

2. 设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的

结点有__n+1_____个。

3. 对于一个有n个结点的二叉树,当它为一棵___完全_____二叉树时具有最小高度,即为

___[log2n]+1____,当它为一棵单支树具有___最大___高度,即为___n____。

4. 由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为__55_。

5. 在一棵二叉排序树上按___中序____遍历得到的结点序列是一个有序序列。

6. 对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为___2n____

个,其中___n-1____个用于链接孩子结点,__n+1_____个空闲着。

7. 在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=__n2+1____。

8. 一棵深度为k的满二叉树的结点总数为__2^k -1_____,一棵深度为k的完全二叉树的结点总数

的最小值为__2^k-1___,最大值为__2^k -1____。

9. 由三个结点构成的二叉树,共有___5_种不同的形态。

10. 设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为_ 2^h -1___。

11. 一棵含有n个结点的k叉树,__单支数____形态达到最大深度,_完全二叉树___形态达到最小

深度。

12. 对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为

____2i____,右孩子结点的编号为____2i+1____,双亲结点的编号为____i/2____。

13. 对于一棵具有n个结点的二叉树,采用二叉链表存储时,链表中指针域的总数为______2n___个,

其中_____n-1______个用于链接孩子结点,____n+1_________个空闲着。

14. 哈夫曼树是指____带权路径长度最小__________________的二叉树。

15. 空树是指___结点数为0______,最小的树是指___只有一个根节点的数_____。

16. 二叉树的链式存储结构有__二叉链表______和_三叉链表_______两种。

17. 三叉链表比二叉链表多一个指向____双亲结点____的指针域。

18. 线索是指___指向前驱和后继结点的指针___________________。

19. 线索链表中的rtag域值为__1___时,表示该结点无右孩子,此时__Rtag____域为指向该结点后

继线索的指针。

20. 本节中我们学习的树的存储结构有____孩子表示法_________、_双亲表示法__________和__孩

子兄弟表示法_________。

习题6 图

一、单项选择题

1. 在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的入度数之和为()。

A. s

B. s-1

C. s+1

D. n

2. 在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有顶点的度数之和为()。

A. s

B. s-1

C. s+1

D. 2s

3. 在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数之和为()。

A. n

B. e

C. n+e

D. 2e

4. 在一个具有n个顶点的无向完全图中,所含的边数为()。

A. n

B. n(n-1)

C. n(n-1)/2

D. n(n+1)/2

5. 在一个具有n个顶点的有向完全图中,所含的边数为()。

A. n

B. n(n-1)

C. n(n-1)/2

D. n(n+1)/2

6. 在一个无向图中,若两顶点之间的路径长度为k,则该路径上的顶点数为()。

A. k

B. k+1

C. k+2

D. 2k

7. 对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为()。

A. 0

B. 1

C. n

D. n+1

8. 若一个图中包含有k个连通分量,若要按照深度优先搜索的方法访问所有顶点,则必须调用()次深度优先搜索遍历的算法。

A. k

B. 1

C. k-1

D. k+1

9. 若要把n个顶点连接为一个连通图,则至少需要()条边。

A. n

B. n+1

C. n-1

D. 2n

10. 在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为()。

A. n

B. n⨯e

C. e

D. 2⨯e

11. 在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素个数为()。

A. n

B. n⨯e

C. e

D. 2⨯e

12. 在一个具有n个顶点和e条边的无向图的邻接表中,边结点的个数为()。

A. n

B. n⨯e

C. e

D. 2⨯e

13. 在一个具有n个顶点和e条边的有向图的邻接表中,保存顶点单链表的表头指针向量的大小至少为()。

A. n

B. 2n

C. e

D. 2e

14. 在一个无权图的邻接表表示中,每个边结点至少包含()域。

A. 1

B. 2

C. 3

D. 4

15. 对于一个有向图,若一个顶点的度为k1,出度为k2,则对应邻接表中该顶点单链表中的边结点数为()。

A. k1

B. k2

C. k1-k2

D. k1+k2

16. 对于一个有向图,若一个顶点的度为k1,出度为k2,则对应逆邻接表中该顶点单链表中的边结点数为()。

A. k1

B. k2

C. k1-k2

D. k1+k2

17. 对于一个无向图,下面()种说法是正确的。

A. 每个顶点的入度等于出度

B. 每个顶点的度等于其入度与出度之和

C. 每个顶点的入度为0

D. 每个顶点的出度为0

18. 在一个有向图的邻接表中,每个顶点单链表中结点的个数等于该顶点的()。

A. 出边数

B. 入边数

C. 度数

D. 度数减1

19. 若一个图的边集为{(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)},则从顶点A开始对该图进行深度优先搜索,得到的顶点序列可能为()。

A. A,B,C,F,D,E

B. A,C,F,D,E,B

C. A,B,D,C,F,E

D. A,B,D,F,E,C

20. 若一个图的边集为{(A,B),(A,C),(B,D),(C,F),(D,E),(D,F)},则从顶点A开始对该图进行广度优先搜索,得到的顶点序列可能为()。

A. A,B,C,D,E,F

B. A,B,C,F,D,E

C. A,B,D,C,E,F

D. A,C,B,F,D,E

21. 若一个图的边集为{<1,2>,<1,4>,<2,5>,<3,1>,<3,5>,<4,3>},则从顶点1开始对该图进行深度优先搜索,得到的顶点序列可能为()。

A. 1,2,5,4,3

B. 1,2,3,4,5

C. 1,2,5,3,4

D. 1,4,3,2,5

22. 若一个图的边集为{<1,2>,<1,4>,<2,5>,<3,1>,<3,5>,<4,3>},则从顶点1开始对该图进行广度优先搜索,得到的顶点序列可能为()。

A. 1,2,3,4,5

B. 1,2,4,3,5

C. 1,2,4,5,3

D. 1,4,2,5,3

23. 由一个具有n个顶点的连通图生成的最小生成树中,具有()条边。

A. n

B. n-1

C. n+1

D. 2 n

24. 已知一个有向图的边集为{,,,,,},则由该图产生的一种可能的拓扑序列为()。

A. a,b,c,d,e

B. a,b,d,e,b

C. a,c,b,e,d

D. a,c,d,b,e

二、填空题

1. 在一个图中,所有顶点的度数之和等于所有边数的________倍。

2. 在一个具有n个顶点的无向完全图中,包含有________条边,在一个具有n个顶点的有向完全图

中,包含有________条边。

3. 假定一个有向图的顶点集为{a,b,c,d,e,f},边集为{, , , , , },则出度

为0的顶点个数为________,入度为1的顶点个数为________。

4. 在一个具有n个顶点的无向图中,要连通所有顶点则至少需要________条边。

5. 表示图的两种存储结构为__________和__________。

6. 在一个连通图中存在着________个连通分量。

7. 图中的一条路径长度为k,该路径所含的顶点数为________。

8. 若一个图的顶点集为{a,b,c,d,e,f},边集为{(a,b),(a,c),(b,c),(d,e)},则该图含有________个连通分量。

9. 对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小至少为_____ _____。

10. 对于具有n个顶点和e条边的有向图和无向图,在它们对应的邻接表中,所含边结点的个数分

别为________和________。

11. 在有向图的邻接表和逆邻接表表示中,每个顶点邻接表分别链接着该顶点的所有________和

________结点。

12. 对于一个具有n个顶点和e条边的无向图,当分别采用邻接矩阵和邻接表表示时,求任一顶点

度数的时间复杂度分别为________和________。

13. 假定一个图具有n个顶点和e条边,则采用邻接矩阵和邻接表表示时,其相应的空间复杂度分

别为________和________。

14. 一个图的边集为{(a,c),(a,e),(b,e),(c,d),(d,e)},从顶点a出发进行深度优先搜索遍历得到的顶点序

列为____________,从顶点a出发进行广度优先搜索遍历得到的顶点序列为____________。15. 一个图的边集为{,,,,,},从顶点a出发进行深度优先搜索遍历得

到的顶点序列为_______,从顶点a出发进行广度优先搜索遍历得到的顶点序列为_______。16. 图的________优先搜索遍历算法是一种递归算法,图的________优先搜索遍历算法需要使用队

列。

17. 对于一个具有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为________和

________。

18. 若一个连通图中每个边上的权值均不同,则得到的最小生成树是________(唯一/不唯一)的。

19. 根据图的存储结构进行某种次序的遍历,得到的顶点序列是__(唯一/不唯一)的。

20. 假定一个有向图的边集为{,,,,,},对该图进行拓扑排序得到的顶

点序列为________。

习题7 查找

一、单项选择题

1. 若查找每个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为()。

A. n

B. n+1

C. (n-1)/2

D. (n+1)/2

2. 对于长度为9的顺序存储的有序表,若采用折半查找,在等概率情况下的平均查找长度为()的9分之一。

A. 20

B. 18

C. 25

D. 22

3. 对于长度为18的顺序存储的有序表,若采用折半查找,则查找第15个元素的比较次数为()。

A. 3

B. 4

C. 5

D. 6

4. 对于顺序存储的有序表(5,12,20,26,37,42,46,50,64),若采用折半查找,则查找元素26的比较次数为()。

A. 2

B. 3

C. 4

D. 5

5. 对具有n个元素的有序表采用折半查找,则算法的时间复杂度为()。

A. O(n)

B. O(n2)

C. O(1)

D. O(log2n)

6. 在索引查找中,若用于保存数据元素的主表的长度为n,它被均分为k个子表,每个子表的长度均为n/k,则索引查找的平均查找长度为()。

A. n+k

B. k+n/k

C. (k+n/k)/2

D. (k+n/k)/2+1

7. 在索引查找中,若用于保存数据元素的主表的长度为144,它被均分为12子表,每个子表的长度均为12,则索引查找的平均查找长度为()。

A. 13

B. 24

C. 12

D. 79

8. 从具有n个结点的二叉排序树中查找一个元素时,在平均情况下的时间复杂度大致为()。

A. O(n)

B. O(1)

C. O(log2n)

D. O(n2)

9. 从具有n个结点的二叉排序树中查找一个元素时,在最坏情况下的时间复杂度为()。

A. O(n)

B. O(1)

C. O(log2n)

D. O(n2)

10. 在一棵平衡二叉排序树中,每个结点的平衡因子的取值范围是()。

A. -1~1

B. -2~2

C. 1~2

D. 0~1

11. 若根据查找表(23,44,36,48,52,73,64,58)建立哈希表,采用h(K)=K%13计算哈希地址,则元素64的哈希地址为()。

A. 4

B. 8

C. 12

D. 13

12. 若根据查找表(23,44,36,48,52,73,64,58)建立哈希表,采用h(K)=K%7计算哈希地址,则哈希地址等于3的元素个数()。

A. 1

B. 2

C. 3

D. 4

13. 若根据查找表建立长度为m的哈希表,采用线性探测法处理冲突,假定对一个元素第一次计算的哈希地址为d,则下一次的哈希地址为()。

A. d

B. d+1

C. (d+1)/m

D. (d+1)%m

二、填空题

1. 以顺序查找方法从长度为n的顺序表或单链表中查找一个元素时,平均查找长度为________,时

间复杂度为________。

2. 对长度为n的查找表进行查找时,假定查找第i个元素的概率为pi,查找长度(即在查找过程中依

次同有关元素比较的总次数)为ci,则在查找成功情况下的平均查找长度的计算公式为________。

3. 假定一个顺序表的长度为40,并假定查找每个元素的概率都相同,则在查找成功情况下的平均查

找长度________,在查找不成功情况下的平均查找长度________。

4. 以折半查找方法从长度为n的有序表中查找一个元素时,平均查找长度约等于________的向上取

整减1,时间复杂度为________。

5. 以折半查找方法在一个查找表上进行查找时,该查找表必须组织成______存储的_______表。

6. 从有序表(12,18,30,43,56,78,82,95)中分别折半查找43和56元素时,其比较次数分别为________

和________。

7. 假定对长度n=50的有序表进行折半查找,则对应的判定树高度为________,最后一层的结点数

为________。

8. 假定在索引查找中,查找表长度为n,每个子表的长度相等,设为s,则进行成功查找的平均查

找长度为____________。

9. 在索引查找中,假定查找表(即主表)的长度为96,被等分为8个子表,则进行索引查找的平均

查找长度为________。

10. 在一棵二叉排序树中,每个分支结点的左子树上所有结点的值一定________该结点的值,右子

树上所有结点的值一定________该结点的值。

11. 对一棵二叉排序树进行中序遍历时,得到的结点序列是一个________。

12. 从一棵二叉排序树中查找一个元素时,若元素的值等于根结点的值,则表明_______,若元素的

值小于根结点的值,则继续向________查找,若元素的值大于根结点的值,则继续向________查找。

13. 向一棵二叉排序树中插入一个元素时,若元素的值小于根结点的值,则接着向根结点的________

插入,若元素的值大于根结点的值,则接着向根结点的________插入。

14. 根据n个元素建立一棵二叉排序树的时间复杂度大致为________。

15. 在一棵平衡二叉排序树中,每个结点的左子树高度与右子树高度之差的绝对值不超过________。

16. 假定对线性表(38,25,74,52,48)进行哈希存储,采用H(K)=K % 7作为哈希函数,采用线性探测法

处理冲突,则在建立哈希表的过程中,将会碰到________次存储冲突。

17. 假定对线性表(38,25,74,52,48)进行哈希存储,采用H(K)=K % 7作为哈希函数,采用线性探测法

处理冲突,则平均查找长度为________。

18. 在线性表的哈希存储中,装填因子α又称为装填系数,若用m表示哈希表的长度,n表示线性

表中的元素的个数,则α等于________。

19. 对线性表(18,25,63,50,42,32,90)进行哈希存储时,若选用H(K)=K % 9作为哈希函数,则哈希地

址为0的元素有________个,哈希地址为5的元素有________个。

习题8 内部排序

一、单项选择题

1. 若对n个元素进行直接插入排序,在进行第i趟排序时,假定元素r[i+1]的插入位置为r[j],则需要移动元素的次数为()。

A. j-i

B. i-j-1

C. i-j

D. i-j+1

2. 若对n个元素进行直接插入排序,则进行任一趟排序的过程中,为寻找插入位置而需要的时间复杂度为()。

A. O(1)

B. O(n)

C. O(n2)

D. O(log2n)

3. 在对n个元素进行直接插入排序的过程中,共需要进行()趟。

A. n

B. n+1

C. n-1

D. 2n

4. 对n个元素进行直接插入排序时间复杂度为()。

A. O(1)

B. O(n)

C. O(n2)

D. O(log2n)

5. 在对n个元素进行冒泡排序的过程中,第一趟排序至多需要进行()对相邻元素之间的交换。

A. n

B. n-1

C. n+1

D. n/2

6. 在对n个元素进行冒泡排序的过程中,最好情况下的时间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(n)

7. 在对n个元素进行冒泡排序的过程中,至少需要()趟完成。

A. 1

B. n

C. n-1

D. n/2

8. 在对n个元素进行快速排序的过程中,若每次划分得到的左、右两个子区间中元素的个数相等或只差一个,则整个排序过程得到的含两个或两个元素的区间个数大致为()。

A. n

B. n/2

C. log2n

D. 2n

9. 在对n个元素进行快速排序的过程中,第一次划分最多需要移动()次元素,包括开始把支点元素移动到临时变量的一次在内。

A. n/2

B. n-1

C. n

D. n+1

10. 在对n个元素进行快速排序的过程中,最好情况下需要进行()趟。

A. n

B. n/2

C. log2n

D. 2n

11. 在对n个元素进行快速排序的过程中,最坏情况下需要进行()趟。

A. n

B. n-1

C. n/2

D. log2n

12. 在对n个元素进行快速排序的过程中,平均情况下的时间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(nlog2n)

13. 在对n个元素进行快速排序的过程中,最坏情况下的时间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(nlog2n)

14. 在对n个元素进行快速排序的过程中,平均情况下的空间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(nlog2n)

15. 在对n个元素进行直接插入排序的过程中,算法的空间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(nlog2n)

16. 对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()。

A. 1, 3, 5, 7, 9

B. 9, 7, 5, 3, 1

C. 5, 3, 1, 7, 9

D. 5, 7, 9, 1, 3

17. 假定对元素序列(7, 3, 5, 9, 1, 12, 8, 15)进行快速排序,则进行第一次划分后,得到的左区间中元素的个数为()。

A. 2

B. 3

C. 4

D. 5

18. 在对n个元素进行简单选择排序的过程中,需要进行()趟选择和交换。

A. n

B. n+1

C. n-1

D. n/2

19. 在对n个元素进行堆排序的过程中,时间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(nlog2n)

20. 在对n个元素进行堆排序的过程中,空间复杂度为()。

A. O(1)

B. O(log2n)

C. O(n2)

D. O(nlog2n)

21. 假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为()。

A. 1, 3, 5, 7, 9, 12

B. 1, 3, 5, 9, 7, 12

C. 1, 5, 3, 7, 9, 12

D. 1, 5, 3, 9, 12, 7

22. 假定一个初始堆为(1, 5, 3, 9, 12, 7, 15, 10),则进行第一趟堆排序后得到的结果为()。

A. 3, 5, 7, 9, 12, 10, 15, 1

B. 3, 5, 9, 7, 12, 10, 15, 1

C. 3, 7, 5, 9, 12, 10, 15, 1

D. 3, 5, 7, 12, 9, 10, 15, 1

23. 若对n个元素进行归并排序,则进行归并的趟数为()。

A. n

B. n-1

C. n/2

D. ⎡log2n⎤

24. 若一个元素序列基本有序,则选用()方法较快。

A. 直接插入排序

B. 简单选择排序

C. 堆排序

D. 快速排序

25. 若要从1000个元素中得到10个最小值元素,最好采用()方法。

A. 直接插入排序

B. 简单选择排序

C. 堆排序

D. 快速排序

26. 若要对1000个元素排序,要求既快又稳定,则最好采用()方法。

A. 直接插入排序

B. 归并排序

C. 堆排序

D. 快速排序

27. 若要对1000个元素排序,要求既快又节省存储空间,则最好采用()方法。

A. 直接插入排序

B. 归并排序

C. 堆排序

D. 快速排序

28. 在平均情况下速度最快的排序方法为()。

A. 简单选择排序

B. 归并排序

C. 堆排序

D. 快速排序

二、填空题

1. 每次从无序子表中取出一个元素,把它插入到有序子表中的适当位置,此种排序方法叫做

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

2.每次直接或通过支点元素间接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法叫做________排序;每次使两个相邻的有序表合并成一个有序表的排序方法叫做________排序。

3.在简单选择排序中,记录比较次数的时间复杂度为________,记录移动次数的时间复杂度为________。

4. 对n个记录进行冒泡排序时,最少的比较次数为________,最少的趟数为_______。

5. 快速排序在平均情况下的时间复杂度为________,在最坏情况下的时间复杂度为________。

6. 若对一组记录(46,79,56,38,40,80,35,50,74)进行直接插入排序,当把第8个记录插入到前面已排序

的有序表时,为寻找插入位置需比较________次。

7. 假定一组记录为(46,79,56,38,40,84),则利用堆排序方法建立的初始小根堆为

____________________。

8. 假定一组记录为(46,79,56,38,40,84),在冒泡排序的过程中进行第一趟排序后的结果为

____________________。

9. 假定一组记录为(46,79,56,64,38,40,84,43),在冒泡排序的过程中进行第一趟排序时,元素79将最

终下沉到其后第_______个元素的位置。

10. 假定一组记录为(46,79,56,38,40,80),对其进行快速排序的过程中,共需要____趟排序。

11. 假定一组记录为(46,79,56,38,40,80),对其进行快速排序的过程中,含有两个或两个以上元素的

排序区间的个数为________个。

12. 假定一组记录为(46,79,56,25,76,38,40,80),对其进行快速排序的第一次划分后,右区间内元素的

个数为__________。

13. 假定一组记录为(46,79,56,38,40,80),对其进行快速排序的第一次划分后的结果为

____________________。

14. 假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,第二趟归并后的

子表个数为________________。

15. 假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,第三趟归并后的

第2个子表为________________。

16. 假定一组记录为(46,79,56,38,40,80,46,75,28,46),对其进行归并排序的过程中,供需要_____趟完

成。

17. 在时间复杂度为O(nlog2n)的所有排序方法中,________排序方法是稳定的。

18. 在时间复杂度为O(n2)的所有排序方法中,________排序方法是不稳定的。

19. 在所有排序方法中,________排序方法采用的是二分法的思想。

20. 在所有排序方法中,________方法使数据的组织采用的是完全二叉树的结构。

21. 在所有排序方法中,________方法采用的是两两有序表合并的思想。

22. ________排序方法使键值大的记录逐渐下沉,使键值小的记录逐渐上浮。

23. ________排序方法能够每次使无序表中的第一个记录插入到有序表中。

24. ________排序方法能够每次从无序表中顺序查找出一个最小值。

《数据结构》练习题库及答案解析

习题2 线性表、栈、队列 一、单项选择题 1. 线性表是___A_____。 A.一个有限序列,可以为空 B.一个有限序列,不可以为空 C.一个无限序列,可以为空 D.一个无限序列,不可以为空 2. 在一个长度为n的顺序表中删除第i个元素(1<=i<=n)时,需向前移动B 个元素。 A.n-i B.n-i+l C.n-i-1 D.i 3. 线性表采用链式存储时,其地址____D____。 A.必须是连续的 B.一定是不连续的 C.部分地址必须是连续的 D.连续与否均可以 4. 从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的情况下,需平均比较_____C___个元素结点。 A.n/2 B.n C.(n+1)/2 D.(n-1)/2 5. 在双向循环链表中,在p所指的结点之后插入s指针所指的结点,其操作是__D__。 A.p->next=s; s->prior=p; p->next->prior=s; s->next=p->next; B.s->prior=p; s->next=p->next; p->next=s; p->next->prior=s; C.p->next=s; p->next->prior=s; s->prior=p; s->next=p->next; D.s->prior=p; s->next=p->next; p->next->prior=s; p->next=s; 6. 设单链表中指针p指向结点m,若要删除m之后的结点(若存在),则需修改指针的操作为___A_____。6. A.p->next=p->next->next; B.p=p->next; C.p=p->next->next; D.p->next=p; 7. 在一个长度为n的顺序表中向第i个元素(0

数据结构试题集[包含答案_完整版]

第一章概论 一、选择题 1、研究数据结构就是研究(D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。 A. 图 B. 树 C. 广义表 D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 for(i=0;i

A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog 2n+n 2+8),其时间复杂度表示( C )。 A. O(n) B. O(nlog 2n) C. O(n 2) D. O(log 2n) 8、下面程序段的时间复杂度为( C )。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C. O(log 3n) D. O(n 3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的( B )和运算等的学科。 A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是(A )。 i=s=0; while(s

数据结构(内排序)练习题与答案

1、以下关于排序的叙述中正确的是()。 A.排序方法都是在顺序表上实现的,在链表上无法实现排序方法 B.稳定的排序方法优于不稳定的排序方法,因为稳定的排序方法效 率较高 C.在顺序表上实现的排序方法在链表上也同样适合 D.对同一个顺序表使用不同的排序方法进行排序,得到的排序结果 可能不同 正确答案:D 解析: D、稳定的排序方法的效率不一定都比不稳定的排序方法高。有些排序方法既可以上顺序表上实现,也可以在链表上实现,但不 是所有的排序方法都如此。由于排序方法具有不同的稳定性,所以 对同一个顺序表(存在相同的多个关键字记录)使用不同的排序方 法进行排序,得到的排序结果可能不同。 2、以下不属于内排序方法的是()。 A.直接插入排序 B.拓扑排序 C.二路归并排序 D.堆排序 正确答案:B 解析: B、拓扑排序是一种产生拓扑序列的方法,不属内排序方法。 3、目前来讲,基于比较的内排序方法最好的平均时间复杂度为 ()。 A. O(log2n) B. O(n2) C. O(nlog2n)

D. O(n) 正确答案:C 解析: C、目前来讲,基于比较的内排序方法最好的平均时间复杂 度为O(nlog2n)。 4、对有n个记录的表进行直接插入排序,在最好情况下需比较()次关键字。 A.n(n-1)/2 B.n-1 C.n/2 D.n+1 正确答案:B 解析: B、直接插入排序在初始数据正序时效率最好,此时只需要 n-1次关键字比较。 5、数据序列{8,9,10,4,5,6,20,1,2}只能是()算法的两 趟排序后的结果。 A.堆排序 B.简单选择排序 C.冒泡排序 D.直接插入排序 正确答案:D 解析: D、采用排除法,因为两趟排序后结果中的有序区不是全局 有序的,所以只能是直接插入排序,不可能是其他三种排序方法。6、对数据序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数 据的排序变为{4,9,-1,8,20,7,15},则采用的是()算法。A.冒泡排序

数据结构习题及参考答案

数据结构习题及参考答案 一、判断下列叙述的对错。 (1)线性表的逻辑顺序与物理顺序总是一致的。 (2)线性表的顺序存储表示优于链式存储表示。 (3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。 (4)二维数组是其数组元素为线性表的线性表。 (5)每种数据结构都应具备三种基本运算:插入、删除和搜索。 二、设单链表中结点的结构为 typedef struct node { file://链表结点定义 ElemType data; file://数据 struct node * Link; file://结点后继指针 } ListNode; (1)已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作? A. s->link = p; p->link = s; B. s->link = p->link; p->link = s; C. s->link = p->link; p = s; D. p->link = s; s->link = p; (2)非空的循环单链表first的尾结点(由p所指向)满足: A. p->link == NULL; B. p == NULL; C. p->link == first; D. p == first; 三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s 2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?

四、一棵具有n个结点的理想平衡二叉树(即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示(注意n可能为0)? 五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。 (1)对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为(A),所有边链表中边结点的总数为(B)。 (2)采用邻接表存储的图的深度优先遍历算法类似于树的(C)。 (3)采用邻接表存储的图的广度优先遍历算法类似于树的(D)。 (4)判断有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用(E)。 供选择的答案 A:①n②n+1③n-1④n+e B:①e/2②e③2e④n+e C~D:①中根遍历②先根遍历③后根遍历④按层次遍历 E:①求关键路径的方法②求最短路径的Dijkstra方法 ③深度优先遍历算法④广度优先遍历算法 六、填空题 (1)在用于表示有向图的邻接矩阵中,对第i行的元素进行累加,可得到第i个顶点的(①)度,而对第j列的元素进行累加,可得到第j个顶点的(②)度。 (2)一个连通图的生成树是该图的(③)连通子图。若这个连通图有n个顶点,则它的生成树有(④)条边。 (3)给定序列{100, 86, 48, 73, 35, 39, 42, 57, 66, 21},按堆结构的定义,则它一定(⑤)堆。 (4)在进行直接插入排序时,其数据比较次数与数据的初始排列(⑥)关;而在进行直接选择排序时,其数据比较次数与数据的初始排列(⑦)关。 (5)利用关键码分别为10, 20, 30, 40的四个结点,能构造出(⑧)种不同的二叉搜索树。 七、设带表头结点的双向链表的定义为 typedef int ElemType;

《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案数据结构 第一章介绍 数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。数据结构的选择对于算法的效率有着重要的影响。本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。下面是一些选定的习题及其答案,供读者参考。 第二章线性表 习题一: 给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。 答案一: 算法思路: 1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素 2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置 3. 当i>=j时,停止逆置 算法实现: ```python

def reverse_list(L): i, j = 0, len(L)-1 while i < j: L[i], L[j] = L[j], L[i] i += 1 j -= 1 ``` 习题二: 给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。 答案二: 算法思路: 1. 遍历线性表B中的每一个元素 2. 将B中的元素依次插入到A的末尾 算法实现: ```python def merge_lists(A, B): for element in B: A.append(element)

``` 第三章栈和队列 习题一: 编写一个算法,判断一个表达式中的括号是否匹配。表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。 答案一: 算法思路: 1. 遍历表达式中的每一个字符 2. 当遇到左括号时,将其推入栈中 3. 当遇到右括号时,判断栈顶元素是否与其匹配 4. 当遇到其他字符时,继续遍历下一个字符 5. 最后判断栈是否为空,若为空则表示括号匹配 算法实现: ```python def is_matching(expression): stack = [] for char in expression: if char in "([{":

数据结构练习试题和答案解析

第1章绪论 一、判断题 1.数据的逻辑结构与数据元素本身的内容和形式无关。(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位。(×) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上没有区别,所以在讨论数据结构时可以通用。(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。(√) 7.数据的存储结构是数据的逻辑结构的存储映象。(√) 8.数据的物理结构是指数据在计算机内实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的。(×) 10.算法是对解题方法和步骤的描述。(√) 二、填空题 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构。 5.在树形结构中,除了树根结点以外,其余每个结点只有1个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算) 3个方面的内容。 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算法和事后统计法。 16.一个算法的时间复杂度是算法输入规模的函数。 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题规模的n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为O( nlog2n)。 19.若一个算法的语句频度之和为T(n)=3n+nlog2+n2,则算法的时间复杂度为O(n2)。 20.数据结构是一门研究非数值计算的程序问题中计算机的操作对象,以及它们之间的关系和运算的学 科。 三、选择题 1.数据结构通常是研究数据的(A)及它们之间的相互关系。 A.存储结构和逻辑结构 B.存储和抽象 C.联系和抽象 D.联系与逻辑 2.在逻辑上可以把数据结构分成(C)。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构。 3.数据在计算机存储内表示时,物理地址和逻辑地址相同并且是连续的,称之为(C)。 A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构 4.非线性结构中的每个结点(D)。 A.无直接前驱结点. B.无直接后继结点.

数据结构习题和答案及解析

第 1 章绪论 课后习题讲解 1. 填空 ⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 【解答】数据元素 ⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。 【解答】数据项,数据元素 【分析】数据结构指的是数据元素以及数据元素之间的关系。 ⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。 【解答】集合,线性结构,树结构,图结构 ⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。 【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系 ⑸算法具有五个特性,分别是()、()、()、()、()。 【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性 ⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。 【解答】自然语言,程序设计语言,流程图,伪代码,伪代码 ⑺在一般情况下,一个算法的时间复杂度是()的函数。 【解答】问题规模 ⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。 【解答】Ο(1),Ο(nlog2n) 【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。 2. 选择题 ⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。 A 线性结构 B 非线性结构 C 存储位置 D 指针 【解答】C,D 【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

数据结构试题及答案(十套)

数据结构试题及答案(十套)数据结构试题及答案(十套) 一、选择题 1. 数据结构是指()。 A. 存储数据的方式 B. 数据的逻辑结构和物理结构 C. 数据的存储结构和存储方式 D. 数据的逻辑结构、存储结构和存储方式 答案:D 2. 在数据结构中,线性表的存储方式包括()。 A. 顺序存储和链式存储 B. 数组存储和链表存储 C. 顺序存储、链表存储和索引存储 D. 顺序存储、链表存储和树形存储 答案:A 3. 栈是一种()的数据结构。 A. 先进先出

B. 先进后出 C. 后进先出 D. 后进后出 答案:C 4. 队列是一种()的数据结构。 A. 先进先出 B. 先进后出 C. 后进先出 D. 后进后出 答案:A 5. 二叉树中,度为0的节点称为()。 A. 叶子节点 B. 根节点 C. 中间节点 D. 子节点 答案:A 6. 以下哪个排序算法是稳定的?

A. 快速排序 B. 选择排序 C. 插入排序 D. 希尔排序 答案:C 7. 图中表示顶点之间关系的边的数量称为()。 A. 顶点度数 B. 边数 C. 路径数 D. 网络 答案:B 8. 哈希表通过()来实现高效的查找操作。 A. 散列函数 B. 排序算法 C. 遍历操作 D. 顺序存储 答案:A

9. 平衡二叉树是一种具有左右子树高度差不超过()的二叉树。 A. 0 B. 1 C. 2 D. 3 答案:B 10. 在链表中,删除节点的操作时间复杂度是()。 A. O(1) B. O(logn) C. O(n) D. O(nlogn) 答案:A 二、填空题 1. 在顺序存储结构中,元素之间的逻辑关系由()表示。 答案:下标 2. 二叉查找树的中序遍历结果是一个()序列。 答案:递增 3. 哈希表通过散列函数将关键字映射到()上。

数据结构练习题及参考答案

《数据结构》练习题 一、解答题(共50分) 1、(8分)假设用于通讯的电文字符集及其出现的频率如下表所示。 请为这8个字符设计哈夫曼编码,并画出其哈夫曼树,计算WPL 。 2. (8分)若一棵二叉树中序遍历和后序遍历序列分别为:DBEHGAFIC 和DHGEBIFCA 。试画出这棵二叉树,并写出其先序遍历和层序遍历序列。 3.(16分)以下无向网络以邻接表为存储结构(假设邻接表的顶点表按字母a 、b 、c 、d 、e 、f 、g 、h 的顺序依次存储,邻接表的边表结点按顶点的下标由小到大链接)。请画出其邻接表,并写出从顶点f 出发,分别进行深度和广度优先遍历的序列,写出用Prime 方法从顶点c 开始产生最小生成树的边的序列。 4.(8分)已知键值序列为(44,39,67,25, 52,59,43,84,54,58,15,26,12,73,92,69),取填充因子α=0.8,采用线性探查法处理冲突,试构造散列表。 ⒌(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81),用希尔排序方法进行排序,d1=5,d2=3,d3=1,则第二趟的排序结果是( )。 ⒍(5分)已知一组记录为(67,88,15,12,60,37,7,31,45,81) ,用堆(大根堆)排序方法进行排序,第一趟的排序结果是( )。 二、完善程序(共20分,每空2分) 1.假设一组递减有序的原始数据存储在数组r 中,存放元素的下标下限为low,下标上 字符 出现频率 a 0.05 b 0.03 c 0.24 d 0.16 e 0.08 f 0.24 g 0.18 h 0.02

数据结构题集及答案

判断题 1.数据的逻辑结构与数据元素本身的内容和形式无关.(√) 2.一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(√) 3.数据元素是数据的最小单位.(√) 4.数据的逻辑结构和数据的存储结构是相同的。(×) 5.程序和算法原则上是没有区别的,所以在讨论数据结构时可以通用.(×) 6.从逻辑关系上讲,数据结构主要分为线性结构和非线性结构。(√) 7.数据的存储结构是数据的逻辑结构的存储映像。(×) 8.数据的物理结构是指数据在计算机内实际的存储形式。(√) 9.数据的逻辑结构是依赖于计算机的.(×) 10.算法是对解题方法和的描述步骤。(√) 填空题: 1.数据有逻辑结构和存储结构两种结构。 2.数据逻辑结构除了集合以外,还包括线性结构、树形结构和图形结构。 3.数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构。 4.树形结构和图形结构合称为非线性结构. 5.在树形结构中,除了树根结点以外,其余每个结点只有 1 个前驱结点。 6.在图形结构中,每个结点的前驱结点数和后继结点数可以任意多个。 7.数据的存储结构又叫物理结构。 8.数据的存储结构形式包括顺序存储、链式存储、索引存储和散列存储。 9.线性结构中的元素之间存在一对一的关系。 10.树形结构中的元素之间存在一对多的关系。 11.图形结构的元素之间存在多对多的关系。 12.数据结构主要研究数据的逻辑结构、存储结构和算法(或运算)3个方面 的内容. 13.数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的关系的 有限集合。 14.算法是一个有穷指令的集合。 15.算法效率的度量可以分为事先估算和事后统计法。 16.一个算法的时间复杂性是算法输入规模的函数. 17.算法的空间复杂度是指该算法所耗费的存储空间,它是该算法求解问题 规模n的函数。 18.若一个算法中的语句频度之和为T(n)=6n+3nlog2n,则算法的时间复杂度为 O( nlog2n )。 若一个算法中的语句频度之和为T(n)=3n+nlog2n+n2,则算法的时间复杂度为 ___O(n*n)_______ 。 数据结构是一门研究非数值计算的程序设计总是中计算机的操作对象,以及它们之间的关系和运算的学科。 19.串的两种最基本的存储方式是顺序存储方式链式存储方式。 20.两个串相等的充分必要条件是、长度相等对应位置的字符相同。

(完整版)数据结构练习题及参考答案

数据结构练习题 第一部分 绪 论 一、单选题 1. 一个数组元素 a[i] 与 __________ 的表示等价。 A 、 *(a+i) B 、 a+i C 、 *a+i D 、 &a+i 2. 对于两个函数,若函数名相同,但只是 _______________ 不同则不是重载函数。 A 、 参数类型 B 、 参数个数 C 、 函数类型 3. 若需要利用形参直接访问实参,则应把形参变量说明为 _____________ 参数 A 、 指针 B 、 引用 C 、 值 4. 下面程序段的时间复杂度为 ______________ 。 for(int i=0; i

数据结构练习试题[附含答案解析]

数据结构练习题 习题1 绪论 1.1 单项选择题 1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。 ① A.操作对象B.计算方法C.逻辑结构D.数据映象 ② A.存储结构B.关系C.运算D.算法 2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。 ① A.算法B.数据元素C.数据操作D.数据对象 ② A.操作B.映象C.存储D.关系 3. 在数据结构中,从逻辑上可以把数据结构分成。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 4. 算法分析的目的是①,算法分析的两个主要方面是②。 ① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系 C. 分析算法的效率以求改进 D. 分析算法的易懂性和文档性 ② A. 空间复杂性和时间复杂性 B. 正确性和简明性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 5. 计算机算法指的是①,它必具备输入、输出和②等五个特性。 ① A. 计算方法 B. 排序方法 C. 解决问题的有限运算序列 D. 调度方法 ② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和安全性 1.2 填空题(将正确的答案填在相应的空中) 1. 数据逻辑结构包括、和三种类型,树形结构和图形结构合称为。 2. 在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。 3. 在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。 4. 在图形结构中,每个结点的前驱结点数和后续结点数可以。 5. 线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。 6. 算法的五个重要特性是____ , ____, ____ , ____ ,____。 7. 分析下面算法(程序段),给出最大语句频度,该算法的时间复杂度是____。 for (i=0;i

数据结构(递归、数组、矩阵)练习题与答案

1、有一个三维数组A [-2.. 2] [-4.. 5] [2.. 6],其中元素个数是()O A.144 B.250 C.396 D.60 正确答案:B 解析:B、A的第1维长度为5,第2维长度为10,第3维长度为 5,元素个数=5X10X5=250。 2、设C/C++二维数组a每个数组元素占用k个存储单元,第一个数组元素的存储地址是L0C(a[0] [0]),求按行优先顺序存放的数组元素(OWiWm-1, OWjWn-l)的存储地址为()。 A.LOC(a[O] [0]) + [(j-l) Xm+i-1] Xk B.LOC(a[O] [O]) + [iXn+j]Xk C.LOC(a[O] [0]) + [(i-l) Xn+j-1] Xk D.LOC(a[O] [O]) + [jXm+i]Xk 正确答案:B 解析:B、前面有0〜i-1行,计iXn个元素,第i行前面有j个元素,则前面有iXm+ j个元素,所以的存储地址=LOC(a[O] [O]) + [iXn+j] Xk。 3、设二维数组若按行优先的顺序存放数组的元素, 则a[4][6]元素的前面有()个元素。 A.6 B.40 C. 28

D. 29 正确答案:D 解析:D、m=5, n=8, a[4] [6]元素的前面的元素个数=(4-1) X 8+(6-1) =29 (> 4、设C/C++二维数组a[6] [10],每个数组元素占用4个存储单元,若按行优先顺序存放所有数组元素,a[3] [5]的存储地址为1000, 则 a[0][0]的存储地址是()o A.864 B.868 C.860 D.872 正确答案:C 解析:C、C/C++二维数组下标从0开始。a[3][5]前面的元素个数= (3-0) X10+(5-0) =35o 所以1000=L0C(a[0] [0])+35X4, L0C(a[0][0])=860o 5、一个n阶对称矩阵A采用压缩存储方式,将其下三角部分(含主 对角线元素)按行优先存储到一维数组B中,则B中元素个数是 ()O A.n(n+l) /2 B.n*n C.n(n+l)/2+l D.n 正确答案:A 6、一个n阶对称矩阵A[L.n, L.n]采用压缩存储方式,将其下三角部分按行优先存储到一维数组中,则(i〈j)元素在B中的位置k是()。

(完整版)数据结构试题及答案

数据结构试卷(一)王彬 一、单选题(每题2 分,共20分) 1.栈和队列的共同特点是( )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 2.用链接方式存储的队列,在进行插入运算时( ). A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 3.以下数据结构中哪一个是非线性结构?( ) A. 队列 B. 栈 C. 线性表 D. 二叉树 4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在 676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。c A.688 B.678 C.692 D.696 5.树最适合用来表示( )。 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 6.二叉树的第k层的结点数最多为( d ). A.2k-1 B.2K+1 C.2K-1 D. 2k-1 7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二 分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为 A. O(1) B. O(n) C. O(1og2n) D. O(n2) 9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K) =K %9作为散列函数,则散列地址为1的元素有( c d)个, A.1 B.2 C.3 D.4 10.设有6个结点的无向图,该图至少应有( )条边才能确保是一个连通图。 A.5 B.6 C.7 D.8 二、填空题(每空1分,共26分) 1.通常从四个方面评价算法的质量:____ ____、________、________和_______。 2.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为________。 3.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数 为__________个,树的深度为_________,树的度为________。 4.后缀算式9 2 3 +- 10 2 / -的值为________。中缀算式(3+4X)-2Y/3对应的后缀算 式为______3 4X* + 2Y* / -_________________________。 5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指 针。在这种存储结构中,n个结点的二叉树共有_______个指针域,其中有________个指针域是存放了地址,有______________个指针是空指针。 6.对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点 分别有______个和______个。 7.AOV网是一种___________________的图。 8.在一个具有n个顶点的无向完全图中,包含有_____条边,在一个具有n个顶点的有向 完全图中,包含有_____条边。 9.假定一个线性表为(12,23,74,55,63,40),若按Key % 4条件进行划分,使得同一余数的元 素成为一个子表,则得到的四个子表分别为__________________________、______________、_____________________和_____________________。

数据结构(C语言)【经典题库】含答案

数据结构(C语言)【经典题库】含答案 数据结构(C语言)【经典题库】含答案 数据结构是计算机科学中的重要基础,对于程序员和软件工程师来说,熟练掌握数据结构是必不可少的。在C语言中,有许多经典的数据结构题目,通过解答这些题目,可以深入理解数据结构的原理和应用。本文将介绍一些经典的数据结构题目,同时附上详细的答案。 一、数组题目 1. 给定一个整型数组arr和一个整数target,找出数组中两个数的和为target的所有组合。 ```C #include void findPairs(int arr[], int n, int target) { int i, j; for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if (arr[i] + arr[j] == target) { printf("%d, %d\n", arr[i], arr[j]); } }

} } int main() { int arr[] = {2, 4, 6, 8, 10}; int target = 14; int n = sizeof(arr) / sizeof(arr[0]); findPairs(arr, n, target); return 0; } ``` 答案解析:使用两层循环遍历数组中的每对元素,判断它们的和是否等于目标值target,如果是则输出。时间复杂度为O(n^2)。 2. 给定一个整型数组arr和一个整数k,求出数组中连续子数组的最大和。 ```C #include int maxSubArraySum(int arr[], int n) { int maxSum = arr[0]; int currentSum = arr[0];

数据结构习题及答案

数据结构习题及答案

第一章 1.在数据结构中,从逻辑上可以把数据结构分为(C ) A.动态结构和静态结构 B. 紧凑结构和非紧凑结构 C.线性结构和非线性结构 D. 内部结构和外部结构 ●2. 在数据结构中,与所使用的计算机无关的是( A ) A. 逻辑结构 B. 存储结构 C. 逻辑和存储结构 D. 物理结构 3.下面程序的时间复杂度为____O(mn) _______。 for (int i=1; i<=m; i++) for (int j=1; j<=n; j++ ) S+=i 第二章线性表 ●链表不具备的特点是(A) A 可以随机访问任一结点(顺序) B 插入删除不需要移动元素 C 不必事先估计空间 D 所需空间与其长度成正比

首地址为100,则下标为12的(第13个)元素的存储地址为148。V 100+4*12=148 11.在顺序表的(最后一个结点之后)插入一个新的数据元素不必移动任何元素。 12.若对线性表进行的操作主要不是插入删除,则该线性表宜采用(顺序)存储结构,若频繁地对线性表进行插入和删除操作,则该线性表宜采用( 链 )存储结构。 13、一个顺序表所占用存储空间的大小与(B)无关。 A.表的长度 B.元素的存放顺序 C. 元素的类型 D.元素中各的类型 ●14、设存储分配是从低地址到高地址进行的。 若每个元素占用4个存储单元,则某元素的地址是指它所占用的单元的(A)。 A. 第1个单元的地址 B. 第2个单元的地址 C. 第3个单元的地址 D. 第4个单元的地址 15、若线性表采用顺序存储结构,每个元素占用4个存储单元,第1个元素的存储地址为100,则第12个元素的存储地址是( B)。 A. 112 B. 144 C.148 D. 412 ●16、若长度为n的线性表采用顺序存储结构,

数据结构习题及答案

习题一 1. 简述下列术语:数据、数据元素、数据对象、数据结构、逻辑结构、存储结构、基本运算、运算实现和数据类型。 2. 设有数据结构(D, R),其中D={d1,d2,d3,d4},R={r},r={ (d1, d2 ) , (d2, d3 ) , (d3, d4 ) }. 试按图论中图的画法惯例画出其逻辑结构图。 3. 函数f(M,n)按下式定义(m,n为≥0的整数): f (m,n)=﹛m+n+1 当m*n=0时 f(m-1,(m,n-1))当 m*n≠0 时(1)试写出计算该函数的递归过程; (2)写出递归过程转换成非递归过程的转换规则。 4. 把数组 A[1…n]按递减顺序排序,并分析其最坏情况时间复杂性量级。 5. 为了用计算机实现学生档案管理, 需要经过哪些主要步骤?每个步骤的主要工 作是什么?试用本章讲到的从“具体到抽象”、再“从抽象到具体”的观点加以分析。 6. 试设定若干n值,比较两函数n2和50nlog2n的增长趋势,并确定n在什么范围内,函数n2值大于50nlog2n 的值。 习题二 1.设线性表存于a(1:n)的前elenum个分量中,且递增有序。试写一算法,将X 插入到线性表的适当位置上,以保持线性表的有序性。 2.写一个逆置线性表的算法。即由A[1:n]产生B[1:n],使得B[1]=A[n],B[2]=A[n-1] , … B[n]=A[1]。要求用最少的附加空间。 3.设有编号为 1,2,3,4 的四辆列车,顺序进入一个栈式结构的站台,试写出这

四辆列车开出车站的所有可能顺序。 4. 设有六辆火车编号为1,2,3,4,5,6 利用栈,将它们重新编成3,2,5,6, 4,1的顺序。请写出操作序列,设X 表示将一列火车从栈中开出;S 表示将一列火车从输入端开入栈中。 5. 假设栈中每个数据项占K 个空间位置,试改写入栈和出栈的算法。 6. 假设有两个栈如图所示共享空间 [1..m]。试写一个对任一栈作入栈 push (s,x ,i )和出栈pop (s,i )。( i = 1,2 )的算法,只有在整个 [1…m]空间均满时才产生溢出。 6 题图 两个栈共享一个数组示意图 7. 按照四则运算加、减、乘、除和幂运算优先关系的惯例,画出对下列算术表 达式求值时操作数栈和运算符栈的变化过程。 A-BXC/D+E ↑F 8. 假设以数组 cycque (0…m-1)存放循环队列的元素,同时设变量 rear 和 quelen 分别表示循环队列中队尾元素位置和内含元素的个数。试给出此循环队列的队满条件。并写出相应的入队列和出队列算法。(在出队列的算法中要返回队头元素)。 9. 已知 Ackerman 函数的定义如下 : ⎪⎩ ⎪⎨⎧≠≠=≠=+=时,))当,(,(时时,当),(时当0n 0m 1-n m akm 1-m akm 0n 0m 11-m akm 0m 1n )n .m (akm (1)试写出递归算法并画出 m ,n 取值时工作栈状态变化情况。 (2)写出非递归算法 10. 联系现实生活理解限制存取点的线性表 。限制存取点的线性表有 (1)栈和队列:本章中巳介绍 . (2)双端队列:对所有的插入和删除都限定在表的两端进行的线性表 。

数据结构试题及答案

一、判断题: 1、线性表的逻辑顺序与物理顺序总是一致的。( ) 2、线性表的顺序存储表示优于链式存储表示。( ) 3、线性表假设采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。( ) 4、二维数组是其数组元素为线性表的线性表。( ) 5、每种数据构造都应具备三种根本运算:插入、删除和搜索。( ) 6、数据构造概念包括数据之间的逻辑构造,数据在计算机中的存储方式和数据的运算三个 方面。( ) 7、线性表中的每个结点最多只有一个前驱和一个后继。〔〕 8、线性的数据构造可以顺序存储,也可以存储。非线性的数据构造只能存储。〔〕 9、栈和队列逻辑上都是线性表。〔〕 10、单链表从任何一个结点出发,都能访问到所有结点〔〕 11、删除二叉排序树中一个结点,再重新插入上去,一定能得到原来的二叉排序树。〔〕 12、快速排序是排序算法中最快的一种。〔〕 13、多维数组是向量的推广。〔〕 14、一般树和二叉树的结点数目都可以为0。〔〕 15、直接选择排序是一种不稳定的排序方法。〔〕 16、98、对一个堆按层次遍历,不一定能得到一个有序序列。〔〕 17、在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。〔〕 18、折半搜索只适用与有序表,包括有序的顺序表和有序的链表。〔〕 19、堆栈在数据中的存储原则是先进先出。〔〕 20、队列在数据中的存储原则是后进先出。〔〕 21、用相邻矩阵表示图所用的存储空间大小与图的边数成正比。〔〕 22、哈夫曼树一定是满二叉树。〔〕 23、程序是用计算机语言表述的算法。〔〕 24、线性表的顺序存储构造是通过数据元素的存储地址直接反映数据元素的逻辑关系。〔〕 25、用一组地址连续的存储单元存放的元素一定构成线性表。〔〕 26、堆栈、队列和数组的逻辑构造都是线性表构造。〔〕 27、给定一组权值,可以唯一构造出一棵哈夫曼树。〔〕 28、只有在初始数据为逆序时,冒泡排序所执行的比拟次数最多。〔〕 29、希尔排序在较率上较直接接入排序有较大的改良。但是不稳定的。〔〕 30、在平均情况下,快速排序法最快,堆积排序法最节省空间。〔〕 31、快速排序法是一种稳定性排序法。〔〕

相关文档
最新文档