i=1;-6-while(i<=n)i=i*3;14、有如下递归函数fact(n),分析其时间复杂度。
intfact(intn){if(n<=1)return1;elsereturn(n*fact(n-1));}15、指出下列各算法的时间复杂度
(1)prime(intn){inti=2;while(n%i!
=0&&isqrt(n))printf"是一素数";elseprintf"不是一素数";}O(sqrt(n))
(2)sum1(intn){intp=1,sum=0,i;for(i=1;i<=n;i++){p*=i;sum+=p;}returm(sum);}(3)sum2(intn){intsum=0,i,j;for(i=1;i<=n;i++){p=1;for(j=1;j<=i;j++)p*=j;sum+=p;}return(sum);}16、数据的逻辑结构是指_____.-7-17、一个数据结构在计算机中的_表示_____称为存储结构.18、顺序存储方法是把逻辑上__相邻的结点___存储在物理位置上___相邻的存储单元___里;链式存储方法中结点间的逻辑关系是由附加的指针字段表示____的.19、数据结构是指研究数据的__存储结构___和__逻辑结构___以及它们之间的相互关系,并对这种结构定义相应的__运算___,设计出相应的__算法___,从而确保经过这些运算后所得到的新结构是原来的结构类型.20、一个算法具有5个特性:
_____、_____、_____、输入和输出。
21、算法的执行时间是_____的函数。
22、数据的逻辑结构是从逻辑上描述数据,它与数据的___存储结构、物理结构___无关,是独立于计算机的.23、数据的逻辑结构被分为____________、____________、___________和____________4种。
24、数据的存储结构被分为____________、____________、____________和____________4种。
25、在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着____1:
1________、____1:
N________、_____M:
N_______的联系。
26、一种抽象数据类型包括______数据______和____操作_______两个部分。
27、从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为____________,输出一个二维数组b[m][n]中所有元素值的时间复杂度为____________28、在下面程序段中,s=s+p语句的执行次数为______n______,p*=j语句的执行次数为______n*(n+1)/2______,该程序段的时间复杂度为______O(n*n)______。
inti=0,s=0;while(++i<=n){intp=1;for(intj=1;j<=i;j++)p*=j;s=s+p;}29、一个算法的时间复杂度为(3*n*n+2nlog2n+4n-7)/(5n),其数量级表示为_____O(n)_______。
30、从一个数组a[10]中顺序查找元素时,假定查找每个元素的概率都相同,则进行一次查找运算时的平均查找长度(即同元素的平均比较次数)为____________。
31、从一个数组a[7]中顺序查找元素时,假定查找第1个元素a[0]的概率为1/3,查找第2个元素a[1]的概率为1/4,其找其余元素的概率均相同,则在查找成功时同元素的平均比较次数为____35/12________。
32、对于一个n*n的矩阵A的任意矩阵元素a[i][j],按行存储时和按列存储时的地址之差是____(i-j)*(n-1)*d______。
设两种存储时的开始存储地址均为LOC(0,0),每个元素所占存储单元数均为d。
33、设有一个二维数组A[10][20],按行存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是____________34、设有一个二维数组A[10][20],按列为主序存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的存储字地址是____________。
37、在线性表的单链接存储结构中,每个结点包含有两个域,一个叫____________,另一个叫____________域。
数据结构复习题:
绪论问答题1、当你为解决某一问题而选择数据结构时,应从哪些方面考虑?
2、简述逻辑结构与存储结构的关系.3、数据运算是数据结构的一个重要方面,试举例说明两个数据结构的逻辑结构和存储方式完全相同,只是对于运算的定义不同,因而两个结构具有显著不同的特性,则这两个数据结构是不同的.-8-数据结构复习题答案:
绪论问答题1、解答:
通常从两方面考虑:
第一是算法所需的存储空间量;第二是算法所需的时间。
对算法所需的时间又涉及以下三点:
(1)程序运行时所需输入的数据总量。
(2)计算机执行每条指令所需的时间。
(3)程序中指令重复执行的次数。
2、答:
数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。
3、答:
栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但由于其运算集合不同而成为不同的数据结构。
2线性表沈阳理工大学应用技术学院信息与控制学院计算机科学与技术教研室2011-5-8-9--10-数据结构复习题:
线性表单选题1、在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)之前插入一个新元素时,需向后移动_____个元素。
2、从一个具有n个节点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较__(n+1)/2___个结点。
3、在一个单链表中,已知*q结点是*p结点的前驱结点,若在*q和*p之间插入*s结点,则执行_____。
4、线性表是_____。
5、对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的,删除一个元素时大约要移动表中的_____个元素。
6、线性表采用链式存储时,其地址_____。
7、设单链表中指针p指着结点m,指针f指着将要插入的新结点x,当x插在链表中最后一个结点m之后时,只要先修改_____后修改p->link=f即可。
8、在双向链表存储结构中,删除p所指的结点时需修改指针_____。
9、在双向链表存储结构中,删除p所指的结点的前趋结点(若存在)时需修改指针_____。
10、根据线性表的链式存储结构,每个结点所含指针的个数,链表分为单链表和_____。
11、在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上_____。
12、链表不具备的特点是_______。
13、不带头结点的单链表head为空的判定条件是______。
14、带头结点的单链表的head为空的判定条件是______。
15、带头结点的双循环表L为空表的条件是__L->next==L____。
16、非空的循环单链表head的尾结点(由p所指向)满足_______。
17、在循环双链表的p所指结点之前插入s所指结点的操作是_______。
18、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用___带头结点的双循环链表___存储方式最节省运算时间。
19、某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,故采用___仅有尾指针的单循环链表__存储方式最节省运算时间。
20、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是_______。
21、如果最常用的操作是取第i个结点及其前驱,则采用___顺序表___存储方式最节省时间。
22、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是______。
23、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行____删除单链表中的最后一个元素____操作与链表的长度有关。
24、设线性表有n个元素,以下算法中,_______在顺序表上实现比在链表上实现效率更高。
25、设线性表中有2n个元素,算法___删除所有值为x的元素____,在单链表上实现要比在顺序表上实现效率更高。
26、与单链表相比,双链表的优点之一是________。
27、如果对线性表的运算只有4种,即删除第一个元素,删除最后一个元素,在第一个元素前面插入新元素,在最后一个元素的后面插入新元素,则最后使用___只有表头指针没有表尾指针的循环双链表_____。
28、如果对线性表的运算只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用_______。
29、设有两个长度为n的单链表,结点类型相同。
若以h1为表头指针的链表是非循环的,以h2为表头指针的链表是循环的,则_______。
30、在长度为n的______上,删除第一个结点,其算法的时间复度为O(n)。
31、将两个各有n个元素的有序顺序表归并成一个有序顺序表,其最少的比较次数是__n___。
-11-32、带头结点的单链表L为空的判定条件是______。
33、在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是_______。
34、在一个长度为n(n>1)的带头结点的单链表h上,,另设有尾指针r(指向尾结点),执行_______操作与链表的长度有关。
35、在一个双链表中,在*p结点之后插入结点*q的操作是______。
36、在一个双链表中,在*p结点之前插入*q结点的操作是______。
37、在一个双链表达式,删除*p结点的操作是_______。
38、在一个双链表中,删除*p结点之后的一个结点的操作是________。
39、非空的循环单链表L的尾结点(由p所指向)满足______。
40、带头结点的双循环链表L为空表的条件是______。
41、若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点,则采用_____带头结点的循环双链表____存储方式最节省运算时间。
42、如果对含有n(n>1)个元素的线性表的运算只有4种:
删除第一个元素;删除最后一个元素;在第一个元素前面插入新元素;在最后一个元素的后面插入新元素,则最好使用____只有头结点指针没有尾结点指针的循环双链表____。
43、某线性表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点,则采用__