数据结构综合练习题(2)

2019-08-20 20:19

{ 170 275* 061 275 } 对前3个调整

{ 275* 170 061 275 } 前3个最大堆,交换275*与061 { 061 170 275* 275 } 对前2个调整

{ 170 061 275* 275 } 前2个最大堆,交换170与061 { 061 170 275* 275 }

数据结构(三)

一、选择题

1.设某无向图有n个顶点,则该无向图的邻接表中有( )个表头结点。 (A) 2n (B) n (C) n/2 (D) n(n-1) 2.设无向图G中有n个顶点,则该无向图的最小生成树上有( )条边。 (A) n (B) n-1 (C) 2n (D) 2n-1

3.设一组初始记录关键字序列为(60,80,55,40,42,85),则以第一个关键字45为基准而得到的一趟快速排序结果是( )。

(A) 40,42,60,55,80,85 (B) 42,45,55,60,85,80 (C) 42,40,55,60,80,85 (D) 42,40,60,85,55,80 4.( )二叉排序树可以得到一个从小到大的有序序列。 (A) 先序遍历 (B) 中序遍历 (C) 后序遍历 (D) 层次遍历

5.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( )。 (A) 2i+1 (B) 2i (C) i/2 (D) 2i-1

6.程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的时间复杂度为( )。

23

(A) O(n) (B) O(nlog2n) (C) O(n) (D) O(n/2)

7.设带有头结点的单向循环链表的头指针变量为head,则其判空条件是( )。 (A) head==0 (B) head->next==0 (C) head->next==head (D) head!=0

8.设某棵二叉树的高度为10,则该二叉树上叶子结点最多有( )。 (A) 20 (B) 256 (C) 512 (D) 1024

9.设一组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利用二分法查找关键字90需要比较的关键字个数为( )。 (A) 1 (B) 2 (C) 3 (D) 4

10.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为( )。 (A) top=top+1; (B) top=top-1; (C) top->next=top; (D) top=top->next;

二、判断题

1、数据的最小单位是数据项。??????????.( √)

2、多重表文件中主索引为非稠密索引,次索引为稠密索引。???.( √ )

3、通常数据结构在计算机中有四种不同的表示方法分为顺序存储结构、链式存储结构、索引存储、文件存储。???.??.( × )

4、算法具有输入、输出、可行性、稳定性、有穷性五个特性。……………….( × ) 5、数据的基本单位是数据项。??????????.( × ) 6、算法的复杂度分为时间复杂度和效率复杂度。????.( × ) 7、性质相同的数据元素的集合成为数据对象。…………….( √ )

8、所有结点按1对1的邻接关系构成的整体就是集合结构。???.( × ) 9、散列文件不能顺序存取、只能按关键字随机存取。?????.( √ ) 10、数据的基本单位是数据元素。??????????.( √ )

11.不论是入队列操作还是入栈操作,在顺序存储结构上都需要考虑“溢出”情况。(√ ) 12.当向二叉排序树中插入一个结点,则该结点一定成为叶子结点。(√ )

13.由树转化成二叉树,该二叉树的右子树不一定为空。( × ) 14.线性表中的所有元素都有一个前驱元素和后继元素。(× ) 15.带权无向图的最小生成树是唯一的。(× )

16.具有12个结点的完全二叉树有5个度为2的结点。( ) 17.关键路径是事件结点网络中的从源点到汇点的最短路径。( ) 18. 由树转化成二叉树,该二叉树的右子树不一定为空。( ) 19.堆排序是不稳定的排序方法。(√ )

20.查找表是由同一类型的数据元素(或记录)构成的集合(√) 三、填空题

1. 设指针变量p指向双向链表中的结点A,指针变量s指向被插入的结点X,则在结点A的后面插入结点X

的操作序列为_________=p;s->right=p->right;__________=s; p->right->left=s;(设结点中的两个指针域分别为left和right)。

2. 设完全有向图中有n个顶点,则该完全有向图中共有________条有向条;设完全无向图中有n个顶点,则

该完全无向图中共有________条无向边。

3. 设关键字序列为(Kl,K2,?,Kn),则用筛选法建初始堆必须从第______个元素开始进行筛选。 4. 解决散列表冲突的两种方法是________________和__________________。 5. 设一棵三叉树中有50个度数为0的结点,21个度数为2的结点,则该二叉树中度数为3的结点数有______

个。

6. 高度为h的完全二叉树中最少有________个结点,最多有________个结点。

7. 设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟直接插入排序结束后的结果的是

__________________________________。

8. 设有一组初始关键字序列为(24,35,12,27,18,26),则第3趟简单选择排序结束后的结果的是

__________________________________。

9. 设一棵二叉树的前序序列为ABC,则有______________种不同的二叉树可以得到这种序列。 10. 下面程序段的功能是实现一趟快速排序,请在下划线处填上正确的语句。

struct record {int key;datatype others;};

void quickpass(struct record r[], int s, int t, int &i) {

int j=t; struct record x=r[s]; i=s; while(i

while (ix.key) j=j-1; if (i

_________________; }

数据结构(三)

一、选择题

1.B 2.B 3.C 4.B 5.B 6.A 7.C 8.C 9.B 10.D

三、填空题

1. s->left=p,p->right 2. n(n-1),n(n-1)/2 3. n/2

4. 开放定址法,链地址法 5. 14

h-1h

6. 2,2-1

7. (12,24,35,27,18,26) 8. (12,18,24,27,35,26) 9. 5

10. i

数据结构(四)

一、选择题

1.设输入序列是1、2、3、??、n,经过栈的作用后输出序列的第一个元素是n,则输出序列中第i个输出元素是( c )。

(A) n-i (B) n-1-i (C) n+1-i (D) 不能确定

2.为查找某一特定单词在文本中出现的位置,可应用的串运算是( )

A.插入 B.删除 C.串联接 D.子串定位 3.设有序表中有1000个元素,则用二分查找查找元素X最多需要比较( )次。 (A) 25 (B) 10 (C) 7 (D) 1

4.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( ) A.顺序表 B.用头指针表示的单循环链表 C.用尾指针表示的单循环链表 D.单链表

5.设某完全无向图中有n个顶点,则该完全无向图中有( )条边。 (A) n(n-1)/2 (B) n(n-1) (C) n2 (D) n2-1

6.设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。 (A) 9 (B) 10 (C) 11 (D) 12

7. 在数据结构中,从逻辑上可以把数据结构分为 ( ) A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.内部结构和外部结构 D. 线性结构和非线性结构

8. 已知图的邻接表如下所示,根据算法,则从顶点V0出发按广度优先遍历的结点序列是( )

A.0 3 2 1 B. 0 1 2 3 C. 0 1 3 2 D. 0 3 1 2 9. 若进栈序列为a,b,c,d,e,则栈的不可能的输出序列是 ( ) A. edcba B. dceab C. decba D. abcde 10.把一棵树转换为二叉树后,这棵二叉树的形态是( )。 A.唯一的 B.有多种

C.有多种,但根结点都没有左孩子 D.有多种,但根结点都没有右孩子 11.为查找某一特定单词在文本中出现的位置,可应用的串运算是( )

A.插入 B.删除 C.串联接 D.子串定位 12.ALV树是一种平衡的二叉树,树中任一结点的( )

A.左、右子树的高度均相同 B.左、右子树高度差的绝对值不超过1 C.左子树的高度均大于右子树的高度 D.左子树的高度均小于右子树的高度 13.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( ) A.顺序表 B.用头指针表示的单循环链表 C.用尾指针表示的单循环链表 D.单链表 14. 二叉树是非线性数据结构,所以( )。

A.它不能用顺序存储结构存储; B.它不能用链式存储结构存储;

C.顺序存储结构和链式存储结构都能存储; D.顺序存储结构和链式存储结构都不能使用 15. 用邻接表表示图进行广度优先遍历时,通常是采用( )来实现算法的。 A.栈 B. 队列 C. 树 D. 图

16.数据的最小单位是( )。

(A) 数据项 (B) 数据类型 (C) 数据元素 (D) 数据变量 17.设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。 (A) 9 (B) 10 (C) 11 (D) 12

18.函数substr(“DATASTRUCTURE”,5,9)的返回值为( )。 (A) “STRUCTURE” (B) “DATA”

(C) “ASTRUCTUR” (D) “DATASTRUCTURE”

19.设某完全无向图中有n个顶点,则该完全无向图中有( )条边。 (A) n(n-1)/2 (B) n(n-1) (C) n2 (D) n2-1 20. 深度为k的完全二叉树中最少有( )个结点。

k-1k-1 k-1k

(A) 2-1 (B) 2(C) 2+1 (D) 2-1

21.设连通图G中的边集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},则从顶点a出发可以得到一种深度优先遍历的顶点序列为( )。

(A) abedfc (B) acfebd (C) aebdfc (D) aedfcb 22.下面关于线性表的叙述错误的是( )。

(A) 线性表采用顺序存储必须占用一片连续的存储空间 (B) 线性表采用链式存储不必占用一片连续的存储空间 (C) 线性表采用链式存储便于插入和删除操作的实现 (D) 线性表采用顺序存储便于插入和删除操作的实现

23.设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有( )个空指针域。

(A) 2m-1 (B) 2m (C) 2m+1 (D) 4m

24.设顺序循环队列Q[0:M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置,尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为( )。 (A) R-F (B) F-R (C) (R-F+M)%M (D) (F-R+M)%M

25.设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为( )。 (A) BADC (B) BCDA (C) CDAB (D) CBDA

二、填空题

1.1.for(i=1,t=1,s=0;i<=n;i++) {t=t*i;s=s+t;}的时间复杂度为 。 2.下面程序段的功能是实现冒泡排序算法,请在下划线处填上正确的语句。 void bubble(int r[n]) {

for(i=1;i<=n-1; i++) {

for(exchange=0,j=0; j< ;j++)

if (r[j]>r[j+1]){temp=r[j+1]; ;r[j]=temp;exchange=1;} if (exchange==0) return; } }

3.下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。 struct record{int key; int others;}; int bisearch(struct record r[ ], int k) {

int low=0,mid,high=n-1; while(low<=high) {

;

if(r[mid].key==k) return(mid+1);

else if( ) high=mid-1;else low=mid+1; }

return(0); }

3.根据二叉树的定义可知二叉树共有 种不同的形态。 4.快速排序的最坏时间复杂度为 ,平均时间复杂度为 。 5.设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为2的结点数为 ;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有 个空指针域。

6.设某无向图中顶点数和边数分别为n和e,所有顶点的度数之和为d,则e= 。

7.设一棵完全二叉树中有21个结点,如果按照从上到下、从左到右的顺序从1开始顺序编号,则编号为8的双亲结点的编号是___________,编号为8的左孩子结点的编号是_____________。 8.设一个连通图G中有n个顶点e条边,则其最小生成树上有________条边。

9.设一组初始记录关键字序列为(55,63,44,38,75,80,31,56),则利用筛选法建立的初始堆为 。 10.设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为 。 三、判断题

1.调用一次深度优先遍历可以访问到图中的所有顶点。( × )

2.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。( √ ) 3.冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。( √ ) 4.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。( √ ) 5.设一棵二叉树的先序序列和后序序列,则能够唯一确定出该二叉树的形状。( × ) 6.设某堆中有n个结点,则在该堆中插入一个新结点的时间复杂度为O(log2n)。( √ ) 7.完全二叉树中的叶子结点只可能在最后两层中出现。(√ ) 8.哈夫曼树中没有度数为1的结点。( √ )

9.对连通图进行深度优先遍历可以访问到该图中的所有顶点。( √ ) 10.先序遍历一棵二叉排序树得到的结点序列不一定是有序的序列。(√ )

四、应用题

1.对如下所示的带权图:

2 v2 v4 v3 2 2 22 2 1 3 v1v5

7 (1) 3 1 4 1 v6 v7 v8

1) 分别按照克鲁斯卡尔算法和普里姆算法,从顶点v1出发,生成最小生成树,按生成次序依次写出各条边; (2)画出该图最小生成树,并求出它的权值。

2.设给定权集W={5,7,2,3,6,8,10},请构造画出关于W的一棵赫夫曼树,并求出其加权路径长度WPL。 3.已知一棵二叉树的先序序列是ABCDEFGHIJK,中序序列是CDBGFEAHJIK,请构造出该二叉树。

4.设有一组初始记录关键字为(45,80,47,40,22,68),要求构造一棵二叉排序树并给出构造过程;画出删除45后的二叉排序树。

5.已知散列函数为H(key)=key mod 7,散列表长度为7(散列地址空间为0.....6),待散列序列关键字依次为:(25,50,32,55,68)。要求

(1)根据以上条件构造一散列表,并用“线性探测再散列法”解决有关地址冲突(要求写出构造过程); (2)若要用该散列表查找元素68,试给出所需的比较次数和依次被比较的关键字。

6、 (1) 求树三棵树的先根序列和后根序列; (2) 求森林先序序列和中序序列; (3)把森林转换为对应的二叉树。

E H

C

B A D G I K J

7、把下面的二叉树转换为相应的森林。

五、算法设计题

1.假设正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’ 和‘ababab’则不是回文。试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。

2.试写一个判别给定二叉树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构。且树中结点的关键字均不同。

3. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。(6分) 4.编写递归算法,计算二叉树中叶子结点的数目。 5.设有一组初始记录关键字序列(K1,K2,?,Kn),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。


数据结构综合练习题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:花房温度、光照度控制电路设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: