数据结构复习习题和答案

更新时间:2023-12-31 13:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

一、

单项选择题

绪论

1. 数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②

和操作等的学科。

① A.操作对象 B.计算方法 C·逻辑存储 D.数据映象 ② A.结构 B.关系 C.运算. D.算法

2.数据结构被形式地定义为(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.易读性、稳定性和安全性 6. 线性表的逻辑顺序与存储顺序总是一致的,这种说法( )。 A. 正确 B.不正确

7. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。 A. 必须是连续的 B.部分地址必须是连续的 C. 一定是不连续的 D. 连续或不连续都可以 8.数据结构通常是研究数据的( )及它们之间的相互联系。 A.存储和逻辑结构 B.存储和抽象 C.理想与抽象 D.理想与逻辑

9.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为()。

A.存储结构 B.逻辑结构 C.顺序存储结构 D.链式存储结构 11.非线性结构是数据元素之间存在一种()。

A.一对多关系 B.多对多关系 C.多对一关系 D.一对一关系 12.非线性结构中,每个结点()。

A.无直接前趋 B.只有一个直接前驱和后继 C.只有一个直接前趋和个数受限制的直接后继 D.有个数不受限制的直接前趋和后继

13.除了考虑存储数据结构本身所占用的空间外,实现算法所用辅助空间的多少称为()。

A.时间效率 B.空间效率 C.硬件效率 D.软件效率 14.链式存储的存储结构所占存储空间()。

A.分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B.只有一部分,存放结点值 C.只有一部分,存储表示结点间关系的指针 D.分两部分,一部分存放结点值,另一部分存放结点所占单元数 15.设语句x+十的时间是单位时间,则语句: for(i=l;i<=n;i++) X++; 的时间复杂度为()。

A.O(l) B.O(n) C.O(n) D.O(n) 二、

填空题

2

3

1.数据元素之间的关系称为(结构),通常分为4种( 集合 )( 线性结构 )(树形结构)(图状结构或网状结构)。

2.在线性结构中,第一个结点(无)前驱结点,其余每个结点有且只有( 1 )个前驱结点;最后一个结点( 无 )后续结点,其余每个结点有且只有( 1 )个后续结点。 3.在树形结构中,树根结点没有( 前驱)结点,其余每个结点有且只有( 1 )个前驱结点;叶子结点没有( 后继)结点,其余每个结点的后继结点可以( 多个 )。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以( 多个 )。 5.线性结构中元素之间存在( 一对一)关系,树形结构中元素之间存在( 一对多 )关系,图形结构中元素之间存在( 多对多 )关系。 6.下面程序段的时间复杂度是( O( mn ) )。 for(i=0;i

for(j=0;j<m;j++) A[i][j]=0; 7.数据结构包括数据的(逻辑结构)、数据的( 存储结构 )。

8.数据结构按逻辑结构可分为两大类,它们分别是(线性结构)和(非线性结构)。 9.数据的存储结构分为(顺序存储结构)和(链式存储结构 )。

10.一个算法的效率可分为( 时间 )效率和( 空间)效率。 11.数据元素是数据的(基本)单位,(数据项)是数据的最小单位。 12.数据对象是( 性质 )相同数据元素的集合。 三、阅读理解题

设n为正整数,利用大“O”记号,将下列程序段的执行时间表示为n的函数。 x=0;

for(i=l; i<n;i++)

for(j=i+1; j<=n; j++) x++; 答案:n(n+1)/2 ,即O( n )

第2章 线性表

一、单项选择题:

1.线性表的的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( )的存储结构。

A·随机存取 B.顺序存取 C.索引存取 D.散列存取 2.在以下的叙述中,正确的是( )。

A. 线性表的顺序存储结构优于链表存储结构 B.二维数组是其数据元素为线性表的线性表 C.栈的操作方式是先进先出

D. 队列的操作方式是先进后出

3.不带头结点的单链表head为空的判定条件是( )。

A. head==NULL B.head->next==NULL C.head->next==head D.head!=NULL 4.带头结点的单键表head为空的判定条件是( )。

A. head==NULL B.head->next==NULL C.head->next==head D.head!=NULL 5.非空的循环单链表head的尾结点(由p所指向)满足( )。 A. p->next==NULL B.p==NULL C.p->next==head D. p==head 6.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s

2

结点,则执行( )。

A. s->next=p->next;p->next=s; B. p->next=s->next;s->next=p; C. q->next=s;s->next=p; D. p->next=s;s->next=q; 7.在单链表中,若p所指结点不是最后结点,在p之后插入S所指结点,则执行( )。 A. S->next=P;P->next=s; B.s->next=p->next;p->next=s; C.s->next=p->next;p=s; D. p->next=s;s->next=p; 8.在一个单链表中,若删除P所指结点的后继结点,则执行( )。

A. p->next=p->next->next; B. p=p->next;p->next=p->next->next; C.p->next=p->next; D. p=p->next->next

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

A. n B.n/2 C.(n-l)/2 D.(n十1)/2

10.在具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是( )。 A. O(l) B.O(n) C.O(n) D.O(nlog2n)

11.用单链表方式存储的线性表,每个结点需要两个域,一个是数据域,另一个是()。 A当前结点所在地址域 B.指针域 C.空指针域 D.空闲域 12.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度都是O(n)。 A.遍历链表和求链表的第i个结点 B.在地址为P的结点之后插入一个结点 C.删除开始结点 D.删除地址为p的结点的后继结点 13.单链表的存储密度()。

A.大于1 B.等于1 C.小于1 D.不能确定

14.已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为dal,则第i个结点的地址为()。

A. dal+(i- l)*m B.dal+i*m C. dal-i*m D. da1+(i+ 1)*m 二、填空题:

1.在线性结构中,第一个结点(无)前驱结点,其余每个结点有且只有(1)个前驱结点;

最后一个结点(无)后续结点,其余每个结点有且只有(1)个后续结点。 2.单链表是(线性表)的链式存储表示。

3.若数组第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是

2

(108)。

4.在一个长度为n的线性表的第i个元素(1<=i<=n+1)之前插入一个元素时,需向后移动(n+1-i)个元素。

5.在长度为n的线性表中删除第i个元素(1≤i≤n)时,需向前移动(n-i)个元素。 6.在双向链表中,每个结点有两个指针域,一个指向(直接前驱),另一个指向(直接后继)。

7.在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=( p->next )和p->next=( s )的操作。

8.对于一个具有n个结点的单链表,在已知P所指结点后插入一个新结点的时间复杂度是(O(1) );在给定值为X的结点后插入一个新结点的时间复杂度是( O(n) )。 9.顺序表相对于链表的优点有(可以随机存取,存储密度高)。

10.链表相对于顺序表的优点有(不需要连续的存储空间,插入和删除时不需要移动元素 )。

11.在n个结点的顺序表中插入和删除一个结点需平均移动大约( n/2 )个结点。 12.线性表的链式存储有三种,分别是(单链表 )(双向链表)( 循环链表)。用数组描述的线性链表称为(静态链表).

13.在顺序表中访问任意一结点的时间复杂度均为(O(1)),因此,顺序表也称为 ( 随机存取 )的数据结构。

14.在n个结点的单链表中要删除已知结点*p,需找到( 该结点的前驱 ),其时间复杂度为( O(n) )。

15.在循环链表中,可根据任一结点的地址遍历整个链表,而单链表中需知道( 头指针 )才能遍历整个链表。所以,整个单链表是由( 头指针)来作为唯一标识的。 三、阅读理解题

NODE *demol(NODE *head, NODE *p) { NODE *q=head->link;

while(q && q->next!=p) q=q->link; if(q) return q;

else printf(“*p not in linklist.\\n”); }

( 3.7 )。

6.对于长度为n的线性表,若进行顺序查找,则时间复杂度为( O(n ) );若采用折半法查找,则时间复杂度为( (log2n) );若采用分块查找(假定总块数和每块长度均接近),则时间复杂度为( O(n ) )。

7.在散列存储中,装填因子а的值越大,则(发生冲突的可能越大,查找时关键字进行比较的次数越多);а的值越小,则(发生冲突的可能越小,查找时关键字进行比较的次数越少)。 8.哈希查找的基本思想是按(关键字)决定数据的存储地址。

9.哈希表的查找效率主要取决于选取的(哈希函数),(处理冲突的方法)和( 哈希表的装填因子 )。

10.折半查找不成功时,出现(low>high)情况,程序终止。 三、简答题:

1. 设哈希表的长度为13,哈希函数为H(k)=k ,给定的关键字序列为:19,14,23,

01,68,20,84,27,55,11,10,79},画出用线性探测法和链地址法解决冲突时所构成的散列表,并求等概率情况下这两种方法查找成功时的平均查找长度。

2. 假定有n个关键字,它们具有相同的哈希函数值,用线性探测法把这n个关键字存入到

散列地址中要做多少次探测?(n+1)*n/2

3. 设有序表为{a,b,c,d,e,f,g,h,i},请画出分别对给定值e和k进行折半查找的过程。 4. 画出对长度为10的有序表进行折半查找的判定树,并求其等概论时查找成功的ASL.

第10章 内 部 排 序

一、单项选择题:

1、在所有的排序方法中,( )不是稳定的排序方法。

A. 希尔排序 B. 冒泡排序 C. 直接插入排序 D. 归并排序

2、设有1000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,最好选用( )方法。

A. 冒泡排序 B. 快速排序 C. 堆排序 D. 基数排序

1/2

3、在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序

4、一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用堆排序的方法建立的初始堆为( )。

A. 79,46,56,38,40,80 B. 84,79,56,38,40,46 C. 84,79,56,46,40,38 D. 84,56,79,40,46,38

5、一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )。

A. 38,40,46,56,79,84 B. 40,38,46,79,56,84 C. 40,38,46,56,79,84 D. 40,38,46,84,56,79

6、一组记录的排序码为(25,48,16,35,79,82,23,40,36,72),其中含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为( )。 A. 16,25,35,48,23,40,79,82,36,72 B. 16,25,35,48,79,82,23,36,40,72 C. 16,25,48,35,79,82,23,36,40,72 D. 16,25,35,48,79,23,36,40,72,82 7、排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为( )。 A. 希尔排序 B. 冒泡排序 C. 插入排序 D. 选择排序

8、排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为( )。

A. 希尔排序 B. 归并排序 C. 插入排序 D. 选择排序

9、用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下:

⑴ 25,84,21,47,15,27,68,35,20 ⑵ 20,15,21,25,47,27,68,35,84 ⑶ 15,20,21,25,35,27,47,68,84 ⑷ 15,20,21,25,27,35,47,68,84, 则所采用的排序方法是( )。

A. 选择排序 B. 希尔排序 C. 归并排序 D. 快速排序 10、下述几种排序方法中,不是基于比较的排序方法是( )。 A. 插入排序 B. 选择排序 C. 快速排序 D. 基数排序 11、下述几种排序方法中,要求内存量最大的是( )。 A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序

12、快速排序方法在( )情况下最不利于发挥其长处。

A. 要排序的数据量太大 B. 要排序的数据中含有多个相同值 C. 要排序的数据已基本有序 D. 要排序的数据个数为奇数

13、对n个不同的排序码进行冒泡排序,在( )情况下比较次数最多。 A. 从小到大排列 B.从大到小排列 C. 元素无序 D.元素基本有序 14、对n个不同的排序码进行冒泡排序,在元素无序时比较的次数为( )。 A. n+1 B. n C. n-1 D. n(n-1)/2

15、快速排序方法在( C )情况下最利于发挥其长处。

A. 被排序的数据中含有多个相同排序码 B. 要排序的数据已基本有序 C. 要排序的数据完全无序

D. 被排序的数据中的最大值和最小值相差悬殊

16、将5个不同的数据进行排序,至少需要比较( )次。 A. 4 B. 5 C. 6 D. 7

17、将5个不同的数据进行排序,至多需要比较( )次。 A. 8 B. 9 C. 10 D. 25 18、下列关键字序列中( )是堆。

A. 16,72,31,23,94,53 B. 94,23,31,72,16,53 C. 16,53,23,94,31,72 D. 16,23,53,31,94,72 19、堆是一种( )排序。

A.插入 B. 选择 C. 交换 D. 归并 20、堆的形状是一棵( )。

A. 二叉排序树 B. 满二叉树 C. 完全二叉树 D. 平衡二叉树 二、填空题:

1、在对一组记录{54,38,96,23,15,72,60,45,83}进行直接插入排序时,当把第七个记录60插入到有序表时,需比较( 3 )次。

2、在利用快速排序方法对一组记录{54,38,96,23,15,72,60,45,83}进行快速排序时,递归调用而使用的栈所能达到的最大深度为(4),共需递归调用的次数为( 5 ),其中第二次递归调用是对( 第一次划分后的 )一组记录进行快速排序。

3、在堆排序、快速排序和归并排序中,若只从存储空间考虑,则应首先选取( 堆排序 )

方法,其次选取( 快速排序 )方法,最后选取( 归并排序 )方法;若只从排序结果的稳定性考虑,则应选取( 归并 )方法;若只从最坏情况下排序最快并且要节约内存考虑,则应选取( 堆排序 )方法。

4、稳定的排序方法是指( 排序后,关键字相同的记录的先后次序不发生变化)。 5、在插入排序、希尔排序、选择排序、快速排序、堆排序、归并排序和基数排序中,平均比较次数最少的排序是( 基数排序),需要内存容量最多的是( 归并排序)。

6、在堆排序和快速排序中,若原始记录接近正序或反序,则选用(堆排序),若原始记录无序,则最好选用( 快速排序 )。

7、在插入和选择排序中,若初始数据基本有序,则选用( 插入排序);若初始数据基本反序,则选用( 选择排序 )。

8、对n个元素的序列进行冒泡排序时,最少的比较次数是(n-1)。 9、对于n个记录的集合进行归并排序,则需要的平均时间是(nlogn )。 10、对于n个记录的集合进行冒泡排序,在最坏情况下所需时间是(O(n))。 11、对于n个记录的集合进行归并排序,所需要的附加空间是( O(n) )。 12、对于n个记录的集合进行快速排序,在最坏情况下所需时间是( O(n))。

13、设要将序列{Q, H, C, Y, P, A, M, S, R, D, F, X }中的关键码按字母升序重新排列,则冒泡排序一趟的结果是({H, C, Q, P, A, M, S, R, D, F, X, Y });初始步长为4的希尔排序一趟的结果是( {P, A, C, S, Q, D, F, X, R, H, M, Y });两路归并一趟的结果是( {H, Q, C, Y, A, P, M, S, D, R, F, X });快速排序一趟的结果是({F, H, C, D, P, A, M, Q, R, S, Y, X });堆排序的初始堆的结果是({A, D, C, R, F, Q, M, S, Y, P, H, X } )。

14、大多数排序算法都有两个基本的操作:( 比较)和( 交换 )。 三、简答题:

1、 对于给定关键字序列{503,087,512,061,908,170,897,275,653,462},分别写

出在直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序和基数排序运行上述数据的各趟结果。

2、 有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问什么排序方法

的时间复杂性最佳?为什么?

22

本文来源:https://www.bwwdw.com/article/xdjx.html

Top