若对大小均为n的有序顺序表和无序顺序表分别进行顺序查

合集下载

数据结构练习3答案

数据结构练习3答案

数据结构练习(三)参考一、选择题1.顺序查找法适合于存储结构为的线性表A)哈希存储C)压缩存储D)索引存储2.一个长度为100的已排好序的表,用二分查找法进行查找,若查找不成功,至少比较________次。

A)9 B)8 C)73.采用顺序查找方法查找长度为n的线性表时,平均比较次数为。

A)n B)n/2 n+1)/2 D)(n-1)/24.对线性表进行折半查找时,要求线性表必须。

A)以顺序方式存储C)以链表方式存储D)以链表方式存储,且结点按关键字有序排列5.采用二分查找法查找长度为n的线性表时,每个元素的平均查找长度为。

A)O(n2)B)O(nlog2n)C)O(n)(log2n)6.有一个长度为12的有序表R[0…11],按折半查找法对该表进行查找,在表内各元素等概率查找情况下查找成功所需的平均比较次数为。

A)35/12 C)39/12 D)43/127.有一个有序表为{1,3,9,12,32,41,45,62,75,77,82,95,99},当采用折半查找法查找关键字为82的元素时,次比较后查找成功。

A)1 B.2 D)88.当采用分块查找时,数据的组织方式为。

A)数据分成若干块,每块内存数据有序每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C)数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D)数据分成若干块,每块(出最后一块外)中的数据个数需相同9.采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应有个结点最佳。

A)10 C)6 D)62510.不能生成右图所示二叉排序树的关键字序列是_____。

B)42531 C)45213 D)4231511.按____遍历二叉排序树,可以得到按值递增或递减次序的关键码序列。

A)先序C)后序D)层序12.在一棵平衡二叉树中,每个结点的平衡因子的取值范围是。

数据结构习题

数据结构习题

习题一一、填空题1. 算法具有有穷性、确定性、可行性、输入和输出五大特征。

2. 数据结构的内容包括以下三个方面:数据元素、数据关系和运算集合。

3. 数据结构的存储结构分为顺序、链式、索引、散列。

4. 评价算法性能的标准主要从算法执行时间和空间两方面考虑。

5. 在线性结构、树形结构和图状结构中,数据元素之间分别存在着1对1 、1对多和多对多关系。

二、分析题2.设n为整数,分析下列程序段中,用*标明的语句的语句频度及时间复杂度。

(1)for(n =1;n<=10;n++)*s=s+n;(2) for(i =1;i<=n;i++)*s=s+n;(3) for(i =1;i<=n;i++)for(j=1;j<=n;j++)*s=s+n(4) for(i =1;i<=n;i++)for(j=1;j<=i ;j++)*s=s+n;(5)for(i =1;i<=n;i++)for(j=1;j<=n;j++){c[i][j]=0;for(k=1;k<=n;k++)*c[i][j]=c[i][j]+a[i][k]*b[k][j];}习题二3.填空题1.在顺序表中,逻辑上相邻的元素,其物理位置上一定相邻。

2.在单链表中,逻辑上相邻的元素,其物理位置上不一定相邻。

3.设单链表中,指针p指向结点s,若要删除s之后的结点(若存在),则需修改指针的操作为P=s->next;s->next=s->next->next;free(p); 。

4.在一个长度为n的顺序表中,如果要删除第i个元素,需移动n-i+1 个元素。

二、选择题1.某线性表中最常用的操作是存取序号为i的元素和在最后进插入和删除运算,则采用(C )存储方式的时间性能最好。

A.双向链表B.双向顺环链表C.顺序表D.单向顺环链表2.在一个单链表中,已知q结点是p结点的前驱结点,若在p和q之间插入s结点,则需执行( C )。

数据结构(本科)期末综合练习一(单选题)

数据结构(本科)期末综合练习一(单选题)

数据结构(本科)期末综合练习一(单选题)单选题1.一个数组元素a[i] 与( )的表示等价。

A.*(a+i)B.a+iC.*a+iD.&a+i2.若需要利用形参直接访问实参,则应把形参变量说明为( )参数。

A.指针B.引用C.传值D.常值3.下面程序段的时间复杂度为( )。

for(int i=0; i<m; i++)for(int j=0; j<n; j++) a[i][j] = i*j;A.O(m2)B.O(n2)C.O(m*n)D.O(m+n)4.执行下面程序段时,执行S语句的次数为( )。

for(int i=1; i<=n; i++)for(int j=1; j<=i; j++) S;A.n2B.n2/2C.n(n+1)D.n(n+1)/25.下面算法的时间复杂度为( )。

int f(unsigned int n) {if(n==0 || n==1) return 1;else return n*f (n-1);}A.O(1)B.O(n)C.O(n2)D.O(n!)6.一种抽象数据类型包括数据和( )两个部分。

A.数据类型B.操作C.数据抽象D.类型说明7.当一个作为实际传递的对象占用的存储空间较大并可能被修改时,应最好说明为( ),以节省参数值的传输时间和存储参数的空间。

A.基本类型B.引用型C.指针型D.常值引用型8.当需要进行标准I/O操作时,则应在程序文件中包含iostream.h头文件,当需要进行文件I/O 操作时,则应在程序文件中包含( )头文件。

A.fstream.hB.stdlib.hC.iomanip.hD.string.h9.一个记录r理论上占有的存储空间的大小等于所有域类型长度之和,实际上占有的存储空间的大小即记录长度为( )。

A.所有域长度之和B.最大域所占字节长度C.任意一个域长度D.sizeof(r)的值10.输出一个二维数组b[m][n]中所有元素值的时间复杂度为( )。

2022年上海海事大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年上海海事大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)

2022年上海海事大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。

A.快速排序B.堆排序C.归并排序D.直接插入排序2、哈希文件使用哈希函数将记录的关键字值计算转化为记录的存放地址,因为哈希函数是一对一的关系,则选择好的()方法是哈希文件的关键。

A.哈希函数B.除余法中的质数C.冲突处理D.哈希函数和冲突处理3、链表不具有的特点是()。

A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比4、最大容量为n的循环队列,队尾指针是rear,队头:front,则队空的条件是()。

A.(rear+1)MOD n=frontB.rear=frontC.rear+1=frontD.(rear-1)MOD n=front5、循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。

A.(rear-front+m)%mB.rear-front+1C.rear-front-1D.rear-front6、已知字符串S为“abaabaabacacaabaabcc”,模式串t为“abaabc”,采用KMP算法进行匹配,第一次出现“失配”(s!=t)时,i=j=5,则下次开始匹配时,i和j的值分别()。

A.i=1,j=0 B.i=5,j=0 C.i=5,j=2 D.i=6,j=27、下列叙述中,不符合m阶B树定义要求的是()。

A.根结点最多有m棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接8、一棵非空的二叉树的前序序列和后序序列正好相反,则该二叉树一定满足()。

A.其中任意一个结点均无左孩子B.其中任意一个结点均无右孩子C.其中只有一个叶结点D.其中度为2的结点最多为一个9、设X是树T中的一个非根结点,B是T所对应的二叉树。

(完整word版)数据结构第九章查找

(完整word版)数据结构第九章查找

第九章查找:习题习题一、选择题1.散列表查找中k个关键字具有同一散列值,若用线性探测法将这k个关键字对应的记录存入散列表中,至少要进行( )次探测。

A. k B。

k+l C. k(k+l)/2 D. l+k (k+l)/22.下述命题( )是不成立的。

A。

m阶B-树中的每一个结点的子树个数都小于或等于mB。

m阶B-树中的每一个结点的子树个数都大于或等于『m/2-1C。

m阶B-树中的每一个结点的子树高度都相等D。

m阶B—树具有k个子树的非叶子结点含有(k-l)个关键字3.如果要求一个基本线性表既能较快地查找,又能适应动态变化的要求,可以采用( )查找方法.A。

分块 B. 顺序 C. 二分 D.散列4.设有100个元素,用折半查找法进行查找时,最大比较次数是( ),最小比较次数是( ).A。

7,1 B.6,l C.5,1 D. 8,15.散列表长m=15,散列表函数H(key)=key%13。

表中已有4个结点:addr(18)=5;addr(32)=6; addr(59)=7;addr(73)=8;其余地址为空,如果用二次探测再散列处理冲突,关键字为109的结点的地址是( )。

A. 8 B。

3 C. 5 D。

46.用分块查找时,若线性表中共有729个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分( )个结点最佳。

A。

15 B. 27 C。

25 D。

307.散列函数有一个共同性质,即函数值应当以( )取其值域的每个值。

A.同等概率B。

最大概率C。

最小概率D。

平均概率8.设散列地址空间为O.。

m—1,k为关键字,假定散列函数为h(k)=k%p,为了减少冲突,一般应取p为( )。

A.小于m的最大奇数B. 小于m的最大素数C.小于m的最大偶数D.小于m的最大合数9.当向一棵m阶的B-树做插入操作时,若使一个结点中的关键字个数等于( ),则必须分裂成两个结点。

A。

m B。

m-l C.m+l D。

《数据结构》填空作业题(答案)

《数据结构》填空作业题(答案)

《数据结构》填空作业题答案第1章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。

2.程序包括两个内容:数据结构和算法。

3. 数据结构的形式定义为:数据结构是一个二元组: Data Structure =(D,S)。

4. 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。

5. 数据的逻辑结构可以分类为线性结构和非线性结构两大类。

6. 在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。

7. 在树形结构中,数据元素之间存在一对多的关系。

8. 数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。

9. 数据的逻辑结构包括线性结构、树形结构和图形结构 3种类型,树型结构和有向图结构合称为非线性结构。

10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。

11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。

12. 数据的存储结构可用4种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。

13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。

14. 数据结构在物理上可分为顺序存储结构和链式存储结构。

15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。

16. 数据元素可由若干个数据项组成。

17. 算法分析的两个主要方面是时间复杂度和空间复杂度。

18. 一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。

19. 算法具有如下特点:有穷性、确定性、可行性、输入、输出。

20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。

数据结构第九、十章 作业答案

数据结构第九、十章 作业答案

第九章 查找一、填空题1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。

2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。

设有100个结点,用二分法查找时,最大比较次数是 7 。

3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ,其下标从小到大依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。

解:显然,平均查找长度=O (log 2n )<5次(25)。

但具体是多少次,则不应当按照公式)1(log 12++=n nn ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。

因为这是在假设n =2m -1的情况下推导出来的公式。

应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!! 4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 比较大小。

5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。

6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。

7. 有一个表长为m 的散列表,初始状态为空,现将n (n<m )个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。

如果这n 个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2=( 1+2+…+n-1) 。

(而任一元素查找次数 ≤n-1)8、设一哈希表表长M 为100 ,用除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈希查找法 10、对线性表进行二分查找时,要求线性表必须以 顺序 方式存储,且结点按关键字有序排列。

头歌桂林电子科技大学数据结构答案

头歌桂林电子科技大学数据结构答案

头歌桂林电子科技大学数据结构答案1、线性结构中数据元素之间是()关系。

[单选题] *A、一对多B、多对多C、多对一D、一对一(正确答案)2、在计算机中存储数据时,通常不仅要存储各数据元素的值,而且要存储()。

[单选题] *A、数据的处理方法B、数据元素的类型C、数据元素之间的关系(正确答案)D、数据的存储方法3、计算机算法指的是()。

[单选题] *A、计算方法B、排序方法C、求解问题的有限运算序列(正确答案)D、调度方法4、算法分析的目的是()。

[单选题] *A、找出数据结构的合理性B、研究算法中的输入和输出的关系C、分析算法的效率以求改进(正确答案)D、分析算法的易懂性和文档性5、某算法的时间复杂度为O(n²),表明该算法的()。

[单选题] *A、问题规模是n²B、执行时间等于n²C、执行时间与n²成正比(正确答案)D、问题规模与n²成正比6、线性表是()。

[单选题] *A、一个有限序列,可以为空(正确答案)B、一个有限序列,不可以为空C、一个无限序列,可以为空D、一个无限序列,不可以为空7、在n个元素的顺序表中,算法的时间复杂度是O(1)的操作是()。

[单选题] *A、访问第i个元素(2≤i≤n)及其前驱元素(正确答案)B、在第i(1≤i≤n)个元素后插入一个新元素C、删除第i个元素(1≤i≤n)D、将n个元素从小到大排序8、将两个分别含有m、n个元素的有序顺序表归并成一个有序顺序表,对应算法的时间复杂度是()。

这里MIN表示取最小值。

[单选题] *A、O(n)C、O(m+n)(正确答案)D、O(MIN(m , n))9、线性表的链式存储结构和顺序存储结构相比,其优点是()。

[单选题] *A、所有的操作算法实现简单B、便于随机存取C、便于插入和删除元素(正确答案)D、节省存储空间10、设线性表中有n个元素,以下运算中,()在单链表上实现要比在顺序表上实现效率更高。

数据结构第九、十章 作业答案

数据结构第九、十章 作业答案

第九章 查找一、填空题1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。

2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。

设有100个结点,用二分法查找时,最大比较次数是 7 。

3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ,其下标从小到大依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。

解:显然,平均查找长度=O (log 2n )<5次(25)。

但具体是多少次,则不应当按照公式)1(log 12++=n n n ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。

因为这是在假设n =2m -1的情况下推导出来的公式。

应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!!4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 比较大小。

5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。

6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。

7. 有一个表长为m 的散列表,初始状态为空,现将n (n<m )个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。

如果这n 个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2=( 1+2+…+n-1) 。

(而任一元素查找次数 ≤n-1)8、设一哈希表表长M 为100 ,用除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈希查找法10、对线性表进行二分查找时,要求线性表必须以 顺序 方式存储,且结点按关键字有序排列。

《数据结构》习题集

《数据结构》习题集

《数据结构》习题集第一章序论思考题:1。

1简述下列术语:数据、数据元素、数据对象、数据结构、存储结构、数据类型、抽象数据类型作业题:1。

2设有数据结构(D,R),其中D={d1, d2, d3, d4}R={r1,r2}r1={<d1, d2〉,<d2,d3>,<d3,d4〉,〈d1, d4>,〈d4,d2>, 〈d4, d1〉}r2={(d1, d2),(d1,d3),(d1, d4),(d2, d4), (d2, d3)}试绘出其逻辑结构示意图。

1。

3设n是正整数。

试写出下列程序段中用记号“△”标注的语句的频度: (1)i=1; k=0;while(i〈=n-1){△k+=10*i;i++;}(2) i=1; k=0;do {△k+=10*i;i++;}while(i〈=n-1)(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);(4) i=1; j=0;while(i+j≤n) {△if(i〈j) i++;else j++;}(5) x=n; y=0; //n是不小于1的常数while(x〉=(y+1)*(y+1)){△y++;}(6)x=91; y=100;while ( y>0 ){△if(x>100) { x—=10; y——; }else x++ ;}(7) for( i=0; i〈n; i++)for( j=i; j〈n; j++)for( k=j; k〈n; k++)△x+=2;1。

4 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。

1.5 已知k阶斐波那契序列的定义为:f0=0,f1=0,……,f k—2=0,f k—1=1;f n=f n—1+f n-2+……+f n-k, n=k,k+1,……试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。

数据结构选择`填空题

数据结构选择`填空题

数据结构(C语言版)选择`填空题(总10页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--数据结构(C语言版)选择、填空题一概论选择1、( )是数据的基本单位。

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算法的时间复杂度为O(n^3),B算法的时间复杂度为O(2^n),则说明( )。

A、对于任何数据量,A算法的时间开销都比B算法小B、随着问题规模n的增大,A算法比B算法有效C、随着问题规模n的增大,B算法比A 算法有效D、对于任何数据量,B算法的时间开销都比A算法小填空1、数据的( )结构依赖于计算机语言.2、数据的逻辑结构可分为线性结构和( )结构。

3、算法的时间复杂度与问题的规模有关外,还与输入实例的( )有关。

4、常用的四种存储方法是什么5、常见的数据的逻辑结构有哪两种6、一般,将算法求解问题的输入量称为( )。

二线性表选择题1、以下关于线性表的说法不正确的是( )。

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

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

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

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

2、线性表的顺序存储结构是一种( )的存储结构。

计算机软件基础习题及参考答案

计算机软件基础习题及参考答案

习题一1.什么是数据结构,数据的逻辑结构,数据的存储结构?数据结构对算法有什么影响?请举例说明。

2.数据结构的存储方式主要有哪两种?它们之间的本质区别是什么?3.设n为正整数, 分析下列各程序段中加下划线的语句的执行次数。

(1) for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {c[i][j] = 0.0;for (int k = 1; k <= n; k++)c[i][j] = c[i][j] + a[i][k] * b[k][j];}(2) x = 0; y = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= i; j++)for (int k = 1; k <= j; k++)x = x + y;(3) int i = 1, j = 1;while (i<=n && j<=n) {i = i + 1; j = j + i;}(4)*int i =1;do{for (int j = 1; j <= n; j++)i = i + j;}while(i<100 + n);4.试编写一个函数计算n!*2n的值,结果存放于数组A[arraySize]的第n个数组元素中,0 ≤n ≤arraySize。

若设计算机中允许的整数的最大值为maxInt,则当n>arraySize或者对于某一个k (0 ≤ k ≤ n),使得k!*2k > maxInt时,应按出错处理。

可有如下三种不同的出错处理方式:(1) 用printf显示错误信息及exit(1)语句来终止执行并报告错误;(2) 用返回整数函数值0, 1来实现算法,以区别是正常返回还是错误返回;(3) 在函数的参数表设置一个引用型的整型变量来区别是正常返回还是某种错误返回。

数据结构查找与排序练习题答案——查找排序练习题答案

数据结构查找与排序练习题答案——查找排序练习题答案

数据结构查找与排序练习题答案一、选择题1.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/22.适用于折半查找的表的存储方式及元素排列要求为( )A.链接方式存储,元素无序 B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序3.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减4.有一个长度为12的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为()。

A.35/12 B.37/12 C.39/12 D.43/125.折半查找的时间复杂性为()A. O(n2)B. O(n)C. O(nlogn)D. O(logn)6.对有18个元素的有序表作折半查找,则查找A[3]的比较序列的下标为()A.1,2,3B.9,5,2,3C.9,5,3D.9,4,2,37.设有序表的关键字序列为{1,4,6,10,18,35,42,53,67,71,78,84,92,99},当用二分查找法查找健值为84的结点时,经()次比较后查找成功。

A.2B. 3C. 4D.128.用n个键值构造一棵二叉排序树,最低高度为()A.n/2B.、nC.lognD.logn+19.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) A.(100,80, 90, 60, 120,110,130)B.(100,120,110,130,80, 60, 90)C.(100,60, 80, 90, 120,110,130)D.(100,80, 60, 90, 120,130,110)10.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key% 13,散列地址为1的链中有()个记录。

第5章 数据结构与算法 习题与答案

第5章 数据结构与算法 习题与答案

第五章习题(1)复习题1、试述数据和数据结构的概念及其区别。

数据是对客观事物的符号表示,是信息的载体;数据结构则是指互相之间存在着一种或多种关系的数据元素的集合。

(P113)2、列出算法的五个重要特征并对其进行说明。

算法具有以下五个重要的特征:有穷性:一个算法必须保证执行有限步之后结束。

确切性:算法的每一步骤必须有确切的定义。

输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件。

输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。

没有输出的算法没有实际意义。

可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。

(P115)3、算法的优劣用什么来衡量?试述如何设计出优秀的算法。

时间复杂度空间复杂度(P117)4、线性和非线性结构各包含哪些种类的数据结构?线性结构和非线性结构各有什么特点?线性结构用于描述一对一的相互关系,即结构中元素之间只有最基本的联系,线性结构的特点是逻辑结构简单。

所谓非线性结构是指,在该结构中至少存在一个数据元素,有两个或两个以上的直接前驱(或直接后继)元素。

树型和图型结构就是其中十分重要的非线性结构,可以用来描述客观世界中广泛存在的层次结构和网状结构的关系。

(P118 P122)5、简述树与二叉树的区别;简述树与图的区别。

树用来描述层次结构,是一对多或多对一的关系;二叉树(Binary Tree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。

二叉树是有序的,即若将其左、右子树颠倒,就成为另一棵不同的二叉树。

图也称做网,是一种比树形结构更复杂的非线性结构。

在图中,任意两个节点之间都可能相关,即节点之间的邻接关系可以是任意的,图表示的多对多的关系。

(P121-P124)6、请举出遍历算法在实际中使用的例子。

提示:根据实际生活中需要逐个访问处理的情况举例。

计算机学科专业基础综合数据结构-查找(一)_真题-无答案

计算机学科专业基础综合数据结构-查找(一)_真题-无答案

计算机学科专业基础综合数据结构-查找(一)(总分100,考试时间90分钟)一、单项选择题(下列每题给出的4个选项中,只有一个最符合试题要求)1. 对长度为n的有序单链表,若查找每个元素的概率相等,则顺序查找表中任一元素查找成功的平均查找长度为______。

A.n/2 B.(n+1)/2 C.(n-1)/2 D.n/42. 对线性表进行折半查找时,要求线性表必须______。

A.以顺序方式存储 B.以链接方式存储 C.以顺序方式存储,且结点按关键字有序排序 D.以链接方式存储,且结点按关键字有序排序3. 采用折半查找方式查找一个长度为n的有序顺序表时,其平均查找长度为______。

A.O(n)B.O(log2n)C.O(n2)D.O(nlog2n)4. 在对长度为n的顺序存储的有序表进行折半查找时,对应的二叉判定树的高度为______。

A.n B.C.D.5. 采用折半查找法查找长度为n的有序顺序表,查找每个元素的数据比较次数______对应二叉判定树的高度(设高度≥2)。

A.小于 B.大于 C.等于 D.小于等于6. 已知有序顺序表(13,18,24,35,47,50,62,83,90,115,134),当用折半查找法查找值为18的元素时,查找成功的数据比较次数为______。

A.1 B.2 C.3 D.47. 折半查找和二叉排序树的时间性能______。

A.相同 B.有时不相同 C.完全不同 D.不定8. m阶B树是一棵______。

A.m叉查找树 B.m叉高度平衡查找树 C.m-1叉高度平衡查找树 D.m+1叉高度平衡查找树9. 在10阶B树中根结点所包含的关键字个数最多为______,最少为1。

A.7 B.8 C.9 D.1010. 在一棵m阶B树的结点中插入新关键字时,若插入前结点的关键字数为______,则插入新关键字后该结点必须分裂为两个结点。

A.m B.m-1 C.m+1 D.m-211. 在一棵高度为h的B树中插入一个新关键字时,为查找插入位置需读取______个结点。

计算机软件基础(解答)

计算机软件基础(解答)

三、解答题:1、什么是常量?C语言中常量有哪几种类型?答:常量:在程序运行过程中其值固定不变的量。

C语言中的常量有整型、实型、字符型和字符串四种。

2、字符常量与字符串常量有什么区别?答:表示形式不同,字符型常量用单引号括起来,而字符串常量用双引号括起来;存存所占的内存空间不同;允许的操作不同。

3、简述线性表的逻辑结构特征?答:(1)对于非空的线性表;①有且仅有一个开始节点,有且仅有一个直接后继;②有且仅有一个终结节点,有且仅有一个直接前趋;③其余的内部节点有且仅有一个直接前趋和一个直接后断。

(2)同一个线性表中的数据节点具有相同的属性。

(3)线性表数据工点的个数为线性表的长度。

4、试描述头指针、头节点、开始节点的区别、并说明头指针和头节点的作用?答:开始节点是指链表中的第一个节点,也就是没有直接前趋的那个节点。

链表的头指针是一指向链表开始节点的指针(没有头节点时),单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。

5、在顺序表中插入和删除一个节点需平均移动多少个节点?具体的移动次数取决于哪两个因素?答:在等概率情况下,顺序表中插入一个节点需平均移动n / 2 个节点。

删除一个节点需平均移动(n—1)/ 2个节点。

具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i 。

i越接近n则所需移动的节点数越少。

6、简述扦环单链表的特点?答:(1)循环单链表是将单链表首尾相接构成的;(2)最后一个指针或不为空,指向表头节点(即r →next=head);(3)单链表只能从前向后访问表中节点,无法找到某节点前面的其他节点;而循环单链表可以通过任一点来访问表中的其他节点。

7、为什么在单循环链表中设置尾指针比设置头指针更好?答:尾指针是指向终端节点的指针,用它来表示单循环链表可以使得查找链表的开始节点和终端节点都很方便,设一带头节点的单循环链表,其尾指针为rear,则开始节点和终端节点的位置分别是rear→next→next和rear,查找时间都是O(1)。

数据结构第九、十章 作业答案

数据结构第九、十章 作业答案

第九章 查找一、填空题1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。

2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。

设有100个结点,用二分法查找时,最大比较次数是 7 。

3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ,其下标从小到大依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。

解:显然,平均查找长度=O (log 2n )<5次(25)。

但具体是多少次,则不应当按照公式)1(log 12++=n n n ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。

因为这是在假设n =2m -1的情况下推导出来的公式。

应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!!4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 比较大小。

5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。

6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。

7. 有一个表长为m 的散列表,初始状态为空,现将n (n<m )个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。

如果这n 个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2=( 1+2+…+n-1) 。

(而任一元素查找次数 ≤n-1)8、设一哈希表表长M 为100 ,用除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈希查找法10、对线性表进行二分查找时,要求线性表必须以 顺序 方式存储,且结点按关键字有序排列。

数据结构经典考题

数据结构经典考题
(5)s->data=___t____。
14、己知两个存放整数的有序单链表(己按整数从小至大的顺序排序),指针L1和L2分别指向这两个单链表的头结点。设计一个算法,将L1和L2合并成一个单链表,且新的链表仍按整数由小到大的顺序排列,新的单链表的结点由L1和L2的结点构成。要求合并后的单链表利用原来单链表的存储空间。
(1)Q=P->NEXT;
(2)P->DATA=P->NEXT->DATA;
(3)P->NEXT=Q->NEXT或P->NEXT->NEXT;
(4)FREE(Q);
11、在一个双链表中,删除*P结点之后的一个结点的操作是_ C 。
A: P->NEXT=P->NEXT->NEXT;
对链表设置头结点的作用是什么?(至少说出两条好处)答:
(1) 对带头结点的链表,在表的任何结点之前插入结点或删除表中任何结点,所要做的都是修改前一结点的指针域,因为任何元素结点都有前驱结点。若链表没有头结点,则首元素结点没有前驱结点,在其前插入结点或删除该结点时操作会复杂些。
(2) 对带头结点的链表,表头指针是指向头结点的非空指针,因此空表与非空表的处理是一样的。
WHILE(P!=NULL&&P->DATA<MINK) //*R为*P的前驱结点
{
R=P;
P=P->NEXT;
}
Q=P; //求值域刚好>MIN
WHILE(Q!=NULL&&Q->DATA>MAXK) //求值域刚好<MAX
18、用不带头结点的单链表存储链栈,设计进栈和出栈相应的算法。

计算机学科专业基础综合数据结构-9

计算机学科专业基础综合数据结构-9

计算机学科专业基础综合数据结构-9(总分:97.50,做题时间:90分钟)一、综合应用题(总题数:24,分数:97.50)假定把关键字key散列到有n个表项(从0到n-1编址)的散列表中。

对于下面的每一个函数H(key)(keyr 为整数),这些函数能够当作散列函数吗?(即对于插入和查找,散列程序能正常工作吗?)如果能够,它是一个好的散列函数吗?请说明理由。

设函数random(n)返回一个0到n-1之间的随机整数(包括0与n-1在内)。

(分数:10.00)(1).H(key)=key/n(分数:2.50)__________________________________________________________________________________________ 正确答案:()解析:不能当作散列函数,因为key/n可能大于n,这样就找不到适合的位置。

(2).H(key)=1(分数:2.50)__________________________________________________________________________________________ 正确答案:()解析:能够作为散列函数,但不是一个好的散列函数,因为所有关键字都映射到同一位置,造成大量的冲突机会。

(3).H(key)=(Key+random(n))%n(分数:2.50)__________________________________________________________________________________________ 正确答案:()解析:不能当作散列函数,因为该函数的返回值不确定,这样无法进行正常的查找。

(4).H(key)=key%p(n);其中p(n)是不大于n的最大素数(分数:2.50)__________________________________________________________________________________________ 正确答案:()解析:能够作为散列函数,是一个好的散列函数。

若对大小均为n的有序顺序表和无序顺序表分别进行顺序查

若对大小均为n的有序顺序表和无序顺序表分别进行顺序查

第九章 查找9.1 若对大小均为n 的有序顺序表和无序顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时平均查找长度是否相同?(1)查找不成功,即表中没有关键字等于给的值K 的记录;(2)查找成功,且表中只有一个关键字等于给定值K 的记录;(3)查找成功,且表中有若干关键字等于给定值K 的记录,要求找出所有这些记录。

答:(1)相同,有序n+1; 无序n+1(2)相同,有序12n +;无序12n + (3)不相同,对于有序表,找到了第一个与K 相同的元素后,只要再找到与K 不同的元素,即可停止查找;对于无序表,则要一直查找到最后一个元素。

9.3 画出对长度为13的有序表进行折半查找的判定树,并分别求其等概率时查找成功和查找不成功的ASL 。

答:查找成功:141(11223446)1313ASL =⨯+⨯+⨯+⨯= 查找失败:2615*3*414147ASL =+=(P220:查找不成功的过程就是走了一条从根节点到外部节点的路径,和给定值进行比较的关键字个数等于该路径上内部结点个数)注:在折半查找判定树中,查找不成功时的比较次数即是查找相应外结点时与内结点的比较次数。

整个判定树代表的有序表在查找失败时的平均查找长度即为查找每个外结点的比较次数之和除以外结点的个数。

例如,长度为10的有序表在查找失败时的平均查找长度为:ASL=(3×5+4×6)/11=39/11第二次作业9.4已知如下所示长度为12的表(Jan, Feb, Mar, Apr, May, Jun, July, Aug, Sep, Oct, Nov, Dec)每个元素的查找概率分别为(0.1,0.25,0.05,0.13,0.01,0.06,0.11,0.07,0.02,0.03,0.1,0.07)(1)1n i i i ASL PC ==∑,Pi 为查找表中第i 个记录的概率,11ni i P ==∑ASL=0.1+0.25*2+3*0.05+4*0.13+5*0.01+6*0.06+7*0.11+8*0.07+9*0.02+10*0.03+11*0.1+12*0.07=5.43或者ASL=12*0.1+11*0.25+10*0.05+9*0.13+8*0.01+7*0.06+6*0.11+5*0.07+4*0.02+ 3*0.03+0.1*2+0.07=7.57(2)画出初始为空,依次插入结点,生成的二叉排序树(3)该二叉排序树查找成功的平均查找长度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章 查找
9.1 若对大小均为n 的有序顺序表和无序顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时平均查找长度是否相同?
(1)查找不成功,即表中没有关键字等于给的值K 的记录;
(2)查找成功,且表中只有一个关键字等于给定值K 的记录;
(3)查找成功,且表中有若干关键字等于给定值K 的记录,要求找出所有这些记录。

答:(1)相同,有序n+1; 无序n+1
(2)相同,有序12n +;无序12
n + (3)不相同,对于有序表,找到了第一个与K 相同的元素后,只要再找到与K 不同的元素,即可停止查找;对于无序表,则要一直查找到最后一个元素。

9.3 画出对长度为13的有序表进行折半查找的判定树,并分别求其等概率时查找成功和查找不成功的ASL 。

答:查找成功:141(11223446)1313
ASL =
⨯+⨯+⨯+⨯= 查找失败:2615*3*414147ASL =+=(P220:查找不成功的过程就是走了一条从根节点到外部节点的路径,和给定值进行比较的关键字个数等于该路径上内部结点个数)
注:在折半查找判定树中,查找不成功时的比较次数即是查找相应外结点时与内结点的比较次数。

整个判定树代表的有序表在查找失败时的平均查找长度即为查找每个外结点的比较次数之和除以外结点的个数。

例如,长度为10的有序表在查找失败时的平均查找长度为:
ASL=(3×5+4×6)/11=39/11
第二次作业
9.4已知如下所示长度为12的表
(Jan, Feb, Mar, Apr, May, Jun, July, Aug, Sep, Oct, Nov, Dec)每个元素的查找概率分别为(0.1,0.25,0.05,0.13,0.01,0.06,0.11,0.07,0.02,0.03,0.1,0.07)
(1)1n i i i ASL PC ==∑,Pi 为查找表中第i 个记录的概率,11n
i i P ==∑
ASL=0.1+0.25*2+3*0.05+4*0.13+5*0.01+6*0.06+7*0.11+8*0.07+9*0.02+10*0.03+11*0.1+12*0.07=5.43
或者
ASL=12*0.1+11*0.25+10*0.05+9*0.13+8*0.01+7*0.06+6*0.11+5*0.07+4*0.02+ 3*0.03+0.1*2+0.07=7.57
(2)画出初始为空,依次插入结点,生成的二叉排序树
(3)该二叉排序树查找成功的平均查找长度。

ASL=0.1+2*(0.25+0.05)+3*(0.13+0.01+0.06)+4*(0.11+0.07+0.02)+(0.03+0.07)*5+6 *0.1=3.2
(4)将二叉排序树中的结点Mar删除,画出经过删除处理后的二叉排序树
方法(1)
方法(2)
9.5在地址空间为0~16的散列区中,对以下关键字序列构造两个哈希表:(Jan,Feb,Mar,Apr,May,Jun,July,Aug,Sep,Oct,Nov,Dec)
(1)用线性探测开放定址法处理冲突;
(2)用链地址法处理。

分别求这两个哈希表在等概率情况下查找成功和不成功时的平均查找长度。

设哈希表函数为H(x)=︱i/2 ︳,其中i为关键字中第一个字母在字母表中的序号。

(1)线性探测法
当发生冲突时,线性探测法从冲突位置的下一个位置起,依次寻找空的散列地址,即:
H i=(H(key)+d i) % m(d i=1,2,…,m-1)。

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Apr Aug Feb Dec Jan Jun Mar May July Sep Oct Nov
等概率情况查找成功的ASL=(5*1+3*2+5+4+6+3)/12=29/12
查找不成功的ASL定义:查找不成功是需和给定值进行比较的关键字个数的期望值。

等概率情况查找不成功的ASL=(13+12+…+1+4*1)/17=95/17
(2)拉链法(链地址法)
用拉链法处理冲突构造的散列表叫做开散列表
等概率情况查找成功的ASL=(7*1+3*2+2*3)/12=19/12
等概率情况查找不成功的ASL=(10*1+4*2+1*3+2*4)/17=29/17
9.7写出判断一棵二叉树是否是二叉排序树的算法,设二叉排序树中不存在关键字值相同的结点
二叉排序树定义如下,二叉排序树或者是一棵空树;或者是具有下列性质的树。

1,若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值 2,若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值 3,它的左右子树也分别为二叉排序树
int last=0,flag=1;
int Is_BSTree(Bitree T)//判断二叉树T 是否二叉排序树,是则返回1,否则返回0 {
if(T->lchild&&flag) Is_BSTree(T->lchild);
if(T->data<last) flag=0; //与其中序前驱相比较
last=T->data;
if(T->rchild&&flag) Is_BSTree(T->rchild);
return flag;
}//Is_BSTree
根据递规定义,如下的递规算法:
typedef struct node
12345678910111213141516
{
datatype data;
struct node left,right;
}NODE,*TREE;
int IsBST0(TREE t, int *pmax, int *pmin) { int max, min;
if(!t->left) *pmin=t->data;
else{
if(!IsBST0(t->left,&max,&min)
return 0;
if(max>t->data) return 0;
*pmin=min;
}
if(!t->right) *pmax=t->data;
else{
if(!IsBST0(t->right,&max,&min)
return 0;
if(min>t->data) return 0;
*pmax=max;
}
return -1;
}
int IsBST(TREE)
{
int max,min;
if(!t)
return -1;
else
return IsBST0(t,&max,&min);
}。

相关文档
最新文档