数据结构习题及答案.docx
- 文档编号:27076570
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:84
- 大小:71.07KB
数据结构习题及答案.docx
《数据结构习题及答案.docx》由会员分享,可在线阅读,更多相关《数据结构习题及答案.docx(84页珍藏版)》请在冰豆网上搜索。
数据结构习题及答案
第1章算法
一、选择题
1.算法的时间复杂度是指()。
A)执行算法程序所需要的时间
B)算法程序中的指令条数
C)算法执行过程中所需要的基本运算次数
D)算法程序的长度
2.算法的空间复杂度是指()。
A)算法程序的长度
B)算法程序所占的存储空间
C)算法执行过程中所需要的存储空间
D)算法程序中的指令条数
3.下面()的时间复杂度最好(即执行时间最短)。
A)O(n)B)O(
)
C)O(n
)D)O(n2)
4.下面累加求和程序段的时间复杂度为()。
intsum(inta[],intn)
{
inti,s=0;
for(i=0;i s+=a[i]; returns; } A)O (1)B)O( ) C)O(n)D)O(n2) 5.下面是将两个n阶矩阵a[][]与b[][]相加的结果存放到n阶矩阵c[][]中的算法,该算法的时间复杂度为()。 voidmatrixadd(inta[][],intb[][],c[][],intn) { inti,j; for(i=0;i for(j=0;j c[i][j]=a[i][j]+b[i][j]; } A)O (1)B)O( ) C)O(n)D)O(n2) 6.下面程序段的时间复杂度为()。 inti=0,s1=0,s2=0; while(i { if(i%2) s1+=i; else s2+=i; i++; } A)O (1)B)O( ) C)O(n)D)O(n2) 7.下面程序段的时间复杂度为()。 intprime(intn) { inti=1; intx=(int)sqrt(n); while(i<=x) { i++; if(n%i==0) break; } if(i>x) return1; else return0; } A)O (1)B)O( ) C)O(n)D)O( ) 8.下面程序段的时间复杂度为() intfun(intn) { inti=1,s=1; while(s { i++; s+=i; } returni; } A)O(n/2)B)O( ) C)O(n)D)O( ) 9.下面程序段的时间复杂度为() inti,j,m,n,a[][]; for(i=0;i for(j=0;j a[i][j]=i*j; A)O(m2)B)O(n2) C)O(m*n)D)O(m+n) 10.下面程序段的时间复杂度为() intsum1(intn) { inti,p=1,s=0; for(i=1;i<=n;i++) { p*=i; s=s+p; } returns; } A)O (1)B)O( ) C)O(n)D)O(n2) 二、填空题 1.算法复杂度主要包括时间复杂度和复杂度。 2.一个算法的时间复杂度的计算式为(3n2+2n+5)/n,其数量级表示为。 3.从一维数组a[n]中顺序查找出一个最大值元素的平均时间复杂度为,读取一个二维数组b[m][n]中任一元素的时间复杂度为。 4.在下面程序段中,s=s+p语句的执行次数为,p*=j语句的执行次数为,该程序段的时间复杂度为。 inti=0,s=o; while(++i<=n) { intp=1; for(intj=1;j<=i;j++) p*=j; s=s+p; } 5.通常用平均性态分析和两种方式来确定一个算法的工作量。 三、简答题 3.什么是算法? 4.算法的基本特征是什么? 5.算法的两种基本要素是什么? 6.递归是算法的基本方法之一,其基本思想是什么? 7.算法的描述方法有多种,试说出任意三种方法。 四、编写出求下列问题的算法 1.比较两个整型数据a1与a2的大小,对于a1>a2、a1==a2、a1 2.求一维double型数组a[n]中的所有元素之乘积。 3.假定一维整型数组a[n]中的每个元素值x均在[0,200]区间内,分别统计出落在0≤x<20、20≤x<50、50≤x<80、80≤x<130、13≤x≤200各区间内的元素个数。 参考答案 一、单选题 1.C2.C3.B4.C5.D 6.C7.D8.D9.C10.C 二、填空题 1.空间2.O(n) 3.O(n),O (1)4.n,n(n+1)/2,O(n2) 5.最坏情况复杂性 三、简答题 1.答案: 所谓算法是指解题方案的准确而完整的描述。 2.答案: 算法的基本特征为: 1)可行性;2)确定性;3)有穷性;4)拥有足够的情报。 3.答案: 算法通常由两种基本要素组成;一是对数据对象的运算和操作;二是算法的控制结构。 4.答案: 人们在解决一些复杂问题时,为了降低问题的复杂程度,一般总是将问题逐层分解,最后归结为一些最简单的问题。 这种将问题逐层分解的过程,实际上并没有对问题进行求解。 而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。 5.答案: 一个算法可以用多种方式来描述,如自然语言、程序语言、流程图等。 四、算法设计 1.比较两个整型数据a1与a2的大小。 charcompare(inta1,inta2) { if(a1>a2) return">"; elase if(a1==a2) return"="; elase return"<"; } 2.求一维double型数组a[n]中的所有元素之乘积。 doubleproduct(dlublea[],intn) { doublep=1; for(inti=0;i p=p*a[i]; returnp; } 3.统计数组a[n]中的每个元素值x分别落在0≤x<20、20≤x<50、50≤x<80、80≤x<130、130≤x≤200各区间内的元素个数。 intcount(inta[],intn,intc[5])//用c[5]保存统计结果 { intd[5]={20,50,80,130,201};//用d[5]保存各统计区间上限 inti,j; for(i=0;i c[i]=0; for(i=0;i { if(a[i]<0;||a[i]>200) return0;//数组中数据有错,统计失败 for(j=0;j<5;j++) if(a[i] c[j]++;//使统计相应区间的元素数增1 } return1;//表示统计成功 } 第2章数据结构的基本概念 一、单选题 1.一个数据结构可形象地表示成B=(D,R),其中D是(①)的有限集合,R是D上的(②)有限集合。 ①A)算法B)数据元素 C)数据操作D)逻辑结构 ②A)操作B)映像 C)存储D)关系 2.数据结构在计算机存储空间中的存放形式称为()。 A)数据元素之间的关系B)数据结构 C)数据的存储结构D)数据的逻辑结构 3.下列叙述中正确的是()。 A)一个逻辑结构只能有一种存储结构 B)数据逻辑结构属于线性结构,存储结构属于非线性结构 C)一个逻辑结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 D)一个逻辑结构可以有多种存储结构,且各种存储结构影响数据处理的效率 4.在数据结构中,与所使用的计算机无关的是数据的()结构。 A)逻辑B)存储 C)逻辑和存储D)物理 5.在存储数据时,通常不仅需要存储各数据元素的值,而且还要存储()。 A)数据的处理方法B)数据元素的类型 C)数据元素之间的关系D)数据的存储方法 6.如果一个非空的数据结构满足两个条件: ①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为()。 A)线性结构B)非线性结构 C)物理结构D)逻辑结构 7.数据的()包括插入、删除、查找、更新、排序等操作类型。 A)存储结构B)逻辑结构 C)基本运算D)算法描述 8.数据的存储结构是指()。 A)数据所占的存储空间B)数据的逻辑结构在计算机中的表示 C)存储在外存中的数据D)数据在计算机中的顺序存储方式 9.在决定选取何种存储结构时,一般不考虑()。 A)结点个数的多少B)各结点的值如何 C)对数据有哪些运算D)所用编程语言实现这种结构是否方便 10.以下说法正确的是()。 A)数据元素是数据的最小单位 B)数据项是数据的基本单位 C)数据结构是带结构的各数据项的集合 D)一些表面上很不相同的数据,可以有相同的逻辑结构 11.在数据结构中,从逻辑上可以把数据结构分成()。 A)动态结构和静态结构B)紧凑结构和非紧凑结构 C)线性结构和非线性结构D)内部结构和外部结构 12.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。 A)数据元素具有同一特点 B)不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C)每个数据元素都一样 D)数据元素所包含的数据项的个数要相等 二、填空题 1.数据的基本单位是,数据的最小单位是。 2.一种数据的逻辑结构,根据需要可以表示成顺序、、和散列四种基本存储结构。 3.根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据分为两大类型。 4.在一个线性结构中插入或删除任何一个结点后还应是。 5.一种数据结构的元素集合为D,它在D上的二元关系R为: D={a,b,c,d,e,f,g,h} R={,, 则该数据结构具有结构。 6.一种数据结构的元素集合为D,它在D上的二元关系R为: D={a,b,c,d,e,f,g,h} R={ 则该数据结构具有结构。 7.数据的逻辑结构分为线性结构和非线性结构,其中的非线性结构有两种基本类型。 三、简答题 1.数据结构主要研究的三个问题是什么? 2.一个数据结构应包含两方面的信息是什么? 3.简述数据存储结构中的顺序存储方式。 4.简述数据存储结构中的链式存储方式 参考答案 一、单选题 1.①B,②D2.C3.D4.A5.C6.A 7.C8.B9.B10.D11.C12.B 二、填空题 1.数据元素,数据项2.链式、索引 3.线性结构与非线性结构4.线性结构 5.线性6.非线性(或树形) 7.树和图 三、简答题 1.答案: 数据结构主要研究的三个问题是: ①数据的逻辑结构,②数据的存储结构,③对各种数据结构进行的运算。 2.答案: 一个数据结构应包含两方面的信息: ①表示数据元素的信息;②表示各数据元素之间的前后件关系。 3.答案: 在数据的存储结构中,顺序存储方式的含义如下: 顺序存储方式: 把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元里,数据元素之间的逻辑关系由存储单元的邻接关系来体现。 4.答案: 在数据的存储结构中,链式存储方式的含义如下: 链式存储方式: 使用指针表示数据元素之间的逻辑关系,各个数据元素的存储位置可以随意,不要求逻辑上相邻的数据元素在物理位置上也相邻。 第3章线性表及其存储结构 一、单选题 1.在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)位置插入一个新元素时,需要从后向前依次后移()个元素。 A)n-iB)n–i+1 C)n–i-1D)i 2.在一个长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次前移()个元素。 A)n-iB)n–i+1 C)n–i-1D)i 3.在一个长度为n的顺序表中,存在值为x的元素。 在此表中用顺序搜索法,查找值为x的元素,在等概率情况下,查找成功时的平均查找长度为()。 A)nB)n/2 C)(n+1)/2D)(n-1)/2 4.在一个长度为n的顺序表中,删除值为x的元素时,需要比较元素的次数和移动元素次数的和为()。 A)n/2B)(n+1)/2 C)nD)n+1 5.在一个顺序表的表尾,插入一个元素时的时间复杂度为()。 A)O (1)B)O( ) C)O(n)D)O(n2) 6.在一个顺序表的任意位置,插入一个元素的时间复杂度为()。 A)O (1)B)O( ) C)O(n)D)O(n/2) 7.线性表的顺序存储比链式存储最有利于进行()操作。 A)查找B)表尾插入或删除 C)按值插入或删除D)表头插入或删除 8.线性表的链式存储比顺序存储最有利于进行()操作。 A)查找B)表尾插入或删除 C)按值插入或删除D)表头插入或删除 9.在一个单链表中,若要在pre所指向的结点之后插入一个新结点,则相继修改()个指针域的值。 A)2B)1C)3D)4 10.在带表头结点的单链表中,插入一个新结点所用算法的时间复杂度为()。 A)O (1)B)O( ) C)O(n)D)O(n/2) 11.以下关于线性表的链式存储结构的叙述中,正确的是()。 A)存储密度大 B)逻辑上相邻的结点物理上不必相邻 C)可以通过计算直接确定第i个结点的存储地址 D)插入、删除运算操作不方便 12.带头结点的单链表H为空的判定条件是()。 A)H==NULLB)H->next==NULL C)H->next==HD)H! =NULL 13.不带头结点的单链表H为空的判定条件是()。 A)H==NULLB)H->next==NULL C)H->next==HD)H! =NULL 14.在一个带头结点的单链表H中,若要向表头插入一个由指针p指向的新结点,则应执行的操作是() A)H=p;p->next=H;B)p->next=H;H=p; C)p->next=H;p=H;D)p->next=H->next;H->next=p; 15.非空的循环单链表H的尾结点(由p所指向)满足()。 A)p==NULLB)p->next==NULL C)p->next==HD)p==H 16.链表不具备的特点是()。 A)插入删除不需要移动元素B)可随机地访问任一结点 C)不必事先估计存储空间D)所需空间与其长度成正比 17.设线性表有n个元素,以下算法中,()在顺序表上实现比在链表上实现的效率更高。 A)输出第i(0≤i≤n-1)个元素 B)交换第0个元素与第1个元素的值 C)顺序输出这n个元素的值 D)输出与给定值x相等的元素在线性表中的序号 18.设线性表中有2n个元素,以下算法中,()在单链表上实现要比在顺序表上实现效率更高。 A)删除所有值为X的元素 B)在最后一个元素的后面插入一个新元素 C)顺序输出前k个元素 D)交换第i个元素和第2n–i-1个元素的值(i=0,1,…,n-1) 二、填空题 1.在线性表中,第一个结点前件,其余每个结点有且只有个前件;最后一个结点后件,其余每个结点有且只有个后件。 2.数据元素在线性表中的位置只取决于它们自己的。 3.线性表中结点的个数n称为线性表的。 当n=0时,称为。 4.用一维数组存放线性表时,数组的基本类型要与线性表中数据元素的类型。 5.线性表的顺序存储结构存在插入、删除操作时需数据元素的缺点。 6.线性表的两种存储结构分别是和。 7.线性表的顺序存储结构称为;线性表的链式存储结构称为。 8.对线性单链表进行插入操作时,没有发生数据元素的,只是改变了有关结点的。 9.在线性单链表中删除一个元素后,不需要表中的数据元素,只需改变被删除元素所在结点的的指针域即可。 10.在带表头结点的单链表中,查找第i个结点。 只能从单链表的,沿着结点的,直到搜索到第i个结点为止。 11.在单链表中,若一个元素所在结点的地址为p,则其后继(件)结点的地址为。 12.在单链表中,删除指针p所指向结点的后继结点时,需要把的值赋给p->next指针域。 13.在单链表中指针p所指结点的后面,插入一个指针q所指的结点时,首先把的值赋给q->next,然后把的值赋给p->next。 14.在一个带表头结点的单链表的表头插入或删除,与在其他位置插入或删除的操作过程是否相同? 。 15.在一个不带表头结点的单链表的表头插入或删除,与在其他位置插入或删除的操作过程是否相同? 。 16.在双向链表中的每一个结点,包含有两个指针域,一个指向结点,另一个指向其结点。 17.在一个双向链表中,通过一个结点的prior和next指针域,能够分别访问到该结点的和结点。 18.由于在循环链表中设置了一个表头结点,因此,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的。 三、简答题 1.非空线性表的结构特征是什么? 2.线性表的顺序存储结构具有哪两个基本特点? 3.用一维数组存放线性表时,应注意什么? 4.简述线性表顺序存储的优点和缺点。 5.什么是线性表的链式存储结构? 6.在带头结点的单链表中与在顺序表中,查找与给定元素值item相等的结点的操作有何不同? 7.带表头结点的循环链表与前面所讨论的单链表相比具有哪两个特点? 四、算法设计 1.分别编写在顺序表和链表中统计出值为x的元素个数的函数,统计结果由函数值返回。 2.分别编写在顺序表和带表头结点的单链表中删除其值等于x的所有元素的函数。 3.编写在单链表中删除具有重复值的多余结点,使每个结点的值均不同的函数。 参考答案 一、单选题 1.B2.A3.C4.C5.A 6.C7.B8.D9.A10.C 11.B12.B13.A14.D15.C 16.B17.A18.A 二、填空题 1.没有,1,没有,12.序号 3.长度,空表4.相同 5.移动大量6.顺序存储结构,链式存储结构 7.顺序表,线性链表8.移动,指针域 9.移动,前一个结点10.头指针出发,链域逐个向下 11.p->next12.p->next->next 13.p->next,q14.相同 15.不相同16.前件,后件 17.前件,后件18.运算统一 三、简答题 1.答案: 非空线性表的结构特征为: ①有且只有一个根结点a1,它无前件; ②有且只有一个终端结点an,它无后件; ③除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。 2.答案: 线性表的顺序存储结构具有如下两个基本特点: ①线性表中所有元素所占的存储空间是连续的; ②线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 3.答案: 用一维数组存放线性表时,应注意数组的基本类型,要与线性表中数据元素的类型相同,而且该一维数组的长度,通常要定义得比线性表的实际长度大一些,以便对线性表进行各种运算。 4.答案: 线性表顺序存储结构的优点是: 简单、存储密度大、空间利用率高,对表中任意元素可直接确定其存储地址,随机访问存取效率高。 缺点是,在顺序表中进行插入与删除操作时,需大量移动数据元素,时间开销大;再者,在顺序存储结构下,线性表的长度估计困难,并且当有多个顺序表同时共享计算机的存储空间时,不便于对存储空间进行动态分配。 5.答案: 假设数据结构中的每一个数据结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。 若每个结点由两部分组成: 一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。 其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 通过每个结点的指针域,将n个结点按其逻辑顺序连接在一起而构成的数据存储结构,称为链式存储结构。 6.答案: 在带表头结点的单链表中进行查找操作,不能像在顺序表中那样根据序号直接访问表中的元素,而只能依据给定数据元素值item,在带表头结点的单链表中从头指针出发,沿着结点的链域逐个向下进行查找。 若查找成功,则返回首次找到的结点的地址。 若查找失败,则返回NULL。 7.答案: 带表头结点的循环链表与前面所讨论的单链表相比具有以下两个特点: ①循环链表的头结点的数据域为任意或者根据需要来设置,头结点的指针域指向线性表的第一个元素的结点(首结点)。 头指针指向表头结点。 ②循环链表中最后一个结点的指针域不是NULL,而是指向表头结点。 即在循环链表中,没有空指针,所有结点的指针构成了一个环状链。 四、算法设计 1.算法由函数Count1()和Count2()所示: //Count1()从顺序表上统计出值为x的元素个数的算法 intCount1(SeqList&L,ElemTypex)//使用&的参数L为引用参数 { inti=0,j; for(j=0;j if(L.list[j]==x) i++; returni; } //Count2从单链表上统计出值为x的元素个数的算法 intCount2(LinkList&H,ElemTtypex) { node*p=H.head->next;//将指向第1个结点的指针赋给p inti=0;//将i作为统计变量 while(p! =NULL) { if(p->data==x) i++; p=p->next; } returni; } 2.算法由函数Delete1()和Delete2()所示: //Delete1()从顺序表中删除具有给定值x的所有元素 voidDelete1(SeqList&L,ElemTypex) { intj,i=0; while(i { if(L.list[i]==x) { for(j=i+1;j L.list[j-1]=L.list[j]; L.length--; } else i++; } } //Delete2()从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题 答案