自考02142《大数据结构导论》串讲笔记
- 格式:doc
- 大小:97.07 KB
- 文档页数:24
全国2009年1月高等教育自学考试数据结构导论试题课程代码:02142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.数据的不可分割的最小标识单位是( A )A.数据项B.数据记录C.数据元素(数据和运算基本单位)D.数据变量2. for(i=0;i<m;i++)for(j=0;j<t;j++)c[i][j]=0;for(i=0;i<m;i++)for(j=0;j<t;j++)for(k=0;k<n;k++)c[i][j]=c[i][j]+a[i][k]*b[k][j];上列程序的时间复杂度为( C )A.O(m+n×t)B.O(m+n+t)C.O(m×n×t)D.O(m×t+n)3.若线性表最常用的操作是存取第i个元素及其前趋的值,那么最节省操作时间的存储方式是( B )A.单链表B.双链表C.单循环链表D.顺序表4.设单链表中指针p指向结点A,要删除A之后的结点(若存在),则修改指针的操作为( A )A.p—>next=p—>next—>next(下一个,下一个原则)B.p=p—>nextC.p=p—>next—>nextD.p—>next=p5.向一个栈顶指针为hs的链栈中插入一个*s结点时,应执行的操作为( B )A.hs—>next=s;B.s—>next=hs;hs=s;(下一个,赋值原则)C.s—>next=hs—>next;hs—>next=s;D.s—>next=hs;hs=hs—>next;6.设循环队列的元素存放在一维数组Q[0‥30]中,队列非空时,front指示队头元素的前一个位置,rear指示队尾元素。
第一张概论1.1 引言两项基本任务:数据表示,数据处理软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。
机外表示------逻辑结构------存储结构处理要求-----基本运算和运算-------算法1.2.1 数据,逻辑结构和运算数据:凡是能够被计算机存储,加工的对象通称为数据数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。
又称元素、顶点、结点、记录。
数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当作一个整体对待。
又称字段或域,是数据不可分割的最小标示单位。
1.2.2 数据的逻辑结构逻辑关系:是指数据元素之间的关联方式,又称“邻接关系”逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。
即数据的组织形式。
四种基本逻辑结构:1 集合:任何两个结点间没有逻辑关系,组织形式松散2 线性结构:结点按逻辑关系依次排列成一条“锁链”3 树形结构:具有分支,层次特性,形态像自然界中的树4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。
注意点:1.逻辑结构与数据元素本身的形式,内容无关。
2.逻辑结构与数据元素的相对位置无关3.逻辑结构与所含结点个数无关。
运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。
加工型运算:改变了原逻辑结构的“值”,如结点个数,结点内容等。
引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。
引用:查找,读取加工:插入,删除,更新同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。
假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。
绝密★考试结束前
全国 2020 年10月高等教育自学考试
据结构导论试题
课程代码02142
1.请考生按规定用笔将所有试题的答案涂、写在答题纸上。
2.答题前考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。
选择题部分
注意事项:
每小题选出答案后用2B铅笔把答题纸上对应题目的答案标号涂黑。
如需改动用橡皮擦干净后再选涂其他答案标号。
不能答在试题卷上。
一、单项选择题本大题共15小题每小题2分共30分。
在每小题列出的备选项中只有一项
是最符合题目要求的请将其选出。
1.数据的最小标识单位是
A.数据项
B.数据类型
C.数据元素
D.数据变量
2.下面程序段的时间复杂度为
o r=0;<n;++)
o r=0;<n;++)
a=*
;
A O(1)
B O(n)
C O2n DO n2)
3.设带头结点的单向循环链表的头指针变量为h e a d,
则空循环链表的判定条件是
A h e a d==NU L L
B h e a d->n e x==NU L L
C h e a d->n e x==h e a d
D h e a d=NU L L
4.设输入序列为1、2、3、4、5、
则通过栈的作用后可以得到的输出序列为。
绝密 考试结束前2023年10月高等教育自学考试数据结构导论试题课程代码:021421.请考生按规定用笔将所有试题的答案涂㊁写在答题纸上㊂2.答题前,考生务必将自己的考试课程名称㊁姓名㊁准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上㊂选择题部分注意事项:每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑㊂如需改动,用橡皮擦干净后,再选涂其他答案标号㊂不能答在试题卷上㊂一㊁单项选择题:本大题共15小题,每小题2分,共30分㊂在每小题列出的备选项中只有一项是最符合题目要求的,请将其选出㊂1.时间复杂度的常数阶表示为A.O(1)B.O(n)C.O(n2)D.O(2n)2.下列关于单链表的描述,错误∙∙的是A.所有结点通过指针链接形成链表B.头指针变量不一定非要用h e a d来标识C.尾结点指针域的值N U L L称为空指针D.通常用尾指针来表示一个单链表3.线性表实现顺序存储可使用A.栈B.队列C.数组D.链表4.设单链表中指针p指向结点A,要删除A之后的结点(若存在),则修改指针的操作为A.p n e x t=p n e x t n e x tB.p=p n e x tC.p=p n e x t n e x tD.p n e x t=p5.出队列操作使用的赋值语句是A.S Q.r e a r=S Q.r e a r+1B.S Q.r e a r=S Q.r e a r-1C.S Q.f r o n t=S Q.f r o n t+1D.S Q.f r o n t=S Q.f r o n t-16.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以t o p为栈顶指针,当栈未满时进行进栈操作,此时A.t o p不变B.t o p--C.t o p++D.t o p=07.带头结点链队列的头指针和尾指针分别为f r o n t和r e a r,则判断队列空的条件为A.f r o n t==r e a rB.f r o n t!=N U L LC.r e a r!=N U L LD.f r o n t==N U L L8.深度为k(kȡ1)的二叉树的结点数最多为A.2k-1B.2k-1C.2k+1D.2k+19.下列关于树形结构的描述,正确的是A.树形结构是线性结构B.树中每个结点可以有多个直接前驱结点C.树可以用顺序存储D.树中每个结点只能有一个直接后继结点10.对任何一棵二叉树,若度数为0的结点(叶结点)个数为n0,度数为2的结点个数为n2,则n0等于A.0B.n2-1C.n2 D.n2+111.设有10个顶点的无向图,若它为连通图,则它具有的边数最少为A.9B.10C.11D.1212.设含有n个顶点,e条弧的有向图G采用邻接表存储,则拓扑排序算法的时间复杂度为A.O(n)B.O(n+e)C.O(n2)D.O(nˑe)13.当查找表中有n个数据元素时,假设P i(i=1,2, ,n)为查找第i个元素的概率,在P i等概率的条件下,顺序查找算法的平均查找长度为A.n/2B.(n+1)/2C.nD.n+114.二维数组A以行为主序存储,每个元素占1个存储单元㊂若元素A[1][1]的存储地址是420,A[3][3]的存储地址是446,则A[5][5]的存储地址是A.470B.471C.472D.47315.冒泡排序属于A.插入排序B.归并排序C.选择排序D.交换排序非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上㊂二㊁填空题:本大题共13小题,每小题2分,共26分㊂16.在数据库中数据项又称为字段或 һ ㊂17.在单链表存储结构中,线性表的表长等于单链表中 һ 的结点个数㊂18.二叉树的顺序存储结构可以用 һ 维数组来实现㊂19.在操作系统中,为了保持多个进程P1㊁P2㊁P3和P4按某种次序依次执行,需要一个 һ来实现这个过程㊂20.对称矩阵有近一半元素可以通过其对称元素获得,因此可将含有n2个元素的对称矩阵压缩存储到含有 һ 个元素的一维数组中㊂21.设有一个带头结点的链栈,其头指针为h e a d,现有一个新结点入栈,指向该结点的指针为p,则入栈操作为 һ 和h e a d n e x t=p㊂22.满二叉树一定是 һ 二叉树㊂23.在树形结构中,结点间具有 һ 关系㊂24.在图中,序列中顶点不重复出现的路径称为 һ 路径㊂25.D i j k s t r a算法用于求 һ 问题㊂26.求最小生成树有 һ 方法和K r u s k a l方法㊂27.若在查找过程中,向表中插入不存在的数据元素,或者从表中删除某个数据元素,则称此类表为 һ 查找表㊂28.在二分查找㊁索引顺序查找和散列查找三种查找方法中,平均查找长度与元素个数没有关系的查找方法是 һ ㊂三㊁应用题:本大题共5小题,每小题6分,共30分㊂29.设有一个链栈的输入序列为A㊁B㊁C,当输出序列分别为A B C和B C A时,请写出对应的进栈和出栈过程㊂30.设有一森林F如题30图所示,请分别写出先序遍历和中序遍历的序列㊂题30图31.如题31图所示长度为13的散列表,其散列函数为H(k e y)=k e y m o d13,在表中已填入键值分别为16,30,54的元素㊂(1)现要插入键值为29的元素,应用线性探测法,计算填入散列表中单元的序号㊂(要求给出求解过程)(2)线性探测法中,如何减少堆积的机会?0123456789101112541630题图32.如题32图所示的图结构,请写出以10为源点的广度优先搜索得到的顶点访问序列,并画出搜索过程图㊂(同等情况下,值小的结点优先访问)题32图33.给定有序表D={006,087,155,188,220,465,505,508,511,586,656,670,700,766},用二分查找法在D中查找511,试给出查找过程㊂四㊁算法设计题:本大题共2小题,每小题7分,共14分㊂34.编制函数求1+2+ +n㊂35.已知循环队列的结构类型如下:t y p e d e f s t r u c t c y c q u e u e{D a t a T y p e d a t a m a x s i z ei n t f r o n t r e a r}C y c Q u eC y c Q u e C Q设计入队列的算法㊂绝密 启用前2023年10月高等教育自学考试全国统一命题考试数据结构导论试题答案及评分参考(课程代码 02142)一㊁单项选择题:本大题共15小题,每小题2分,共30分㊂1.A2.D3.C4.A5.C6.C7.B8.B9.C10.D11.A 12.B 13.B 14.C 15.D 二㊁填空题:本大题共13小题,每小题2分,共26分㊂16.域17.数据元素18.一19.队列20.n (n +1)/221.pn e x t =h e adn e x t22.完全23.层次24.简单25.单源最短路径26.P r i m27.动态28.散列查找三㊁应用题:本大题共5小题,每小题6分,共30分㊂29.输出A B C :A 进,A 出,B 进,B 出,C 进,C 出;(3分)输出B C A :A 进,B 进,B 出,C 进,C 出,A 出㊂(3分)30.先序序列为A B C D E F G H J I ;(3分)中序序列为B C D A F E J H I G ㊂(3分)31.(1)散列函数求出其散列地址为3,在地址3上面已有元素16,发生冲突㊂(1分)应用线性探测法,得到下一个地址为d +1=4,仍冲突,(1分)则再求下一个地址d +2=5,这个位置上没有元素,将元素填入散列表中序号为5的单元㊂(2分)(2)应设法使后继散列地址尽量均匀地分散在整个散列表中㊂(2分)32.序列:10,20,30,50,40,60(3分)答32图(3分)33.01(1)006 02087 03155 04188 05220 06465 07505 08508 09511 10586 11656 12670 13700 14766ʏl o wʏm i dʏh i gh (2分)(2)006 087 155 188 220 465 505 508 511 586 656 670 700 766ʏʏʏl o w m i d h i gh (2分)(3)006 087 155 188 220 465 505 508 511 586 656 670 700 766ʏʏʏl o w m i d h i gh (2分)四㊁算法设计题:本大题共2小题,每小题7分,共14分㊂34.i n t f a c t 1(i n t n ){ i n t i ,j ,t e m p ,s ; s =0;(2分) f o r (i =1;i <=n ;i ++) {t e m p =1;(3分)f o r (j =1;j <=i ;j ++) t e m p =t e m p *j; s =s +t e m p ;}r e t u r n s ;}(2分)(注:答案不唯一,正确即可)35.i n tE n Q u e u e (C y c Q u eC Q ,D a t a T y pex ){i f ((C Q.r e a r +1)%m a x s i z e ==C Q.f r o n t ) {e r r o r ( 队列满 );r e t u r n0;}(3分)e l s e { C Q.r e a r=(C Q.r e a r +1)%m a x s i z e ; C Q.d a t a [C Q.r e a r ]=x ;(3分)r e t u r n 1; }分)。
自考02142《数据结构导论》历年真题集电子书目录1. 目录 (2)2. 历年真题 (3)2.1 02142数据结构导论200410 (3)2.2 02142数据结构导论200510 (7)2.3 02142数据结构导论200610 (10)2.4 02142数据结构导论200701 (14)2.5 02142数据结构导论200710 (17)2.6 02142数据结构导论200801 (19)2.7 02142数据结构导论200810 (22)2.8 02142数据结构导论200901 (25)2.9 02142数据结构导论200910 (28)2.10 02142数据结构导论201001 (30)2.11 02142数据结构导论201010 (34)2.12 02142数据结构导论201101 (37)2.13 02142数据结构导论201110 (40)3. 相关课程 (42)1. 目录历年真题()02142数据结构导论200410()02142数据结构导论200510()02142数据结构导论200610()02142数据结构导论200701()02142数据结构导论200710()02142数据结构导论200801()02142数据结构导论200810()02142数据结构导论200901()02142数据结构导论200910()02142数据结构导论201001()02142数据结构导论201010()02142数据结构导论201101()02142数据结构导论201110()相关课程()2. 历年真题2.1 02142数据结构导论2004102004年下半年高等教育自学考试全国统一命题考试数据结构导论试题课程代码2142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为()A.逻辑结构、存储结构、机外表示B.存储结构、逻辑结构、机外表示C.机外表示、逻辑结构、存储结构D.机外表示、存储结构、逻辑结构2.若评价算法的时间复杂性,比较对数阶量级与线性阶量级,通常()A.对数阶量级复杂性大于线性阶量级B.对数阶量级复杂性小于线性阶量级C.对数阶量级复杂性等于线性阶量级D.两者之间无法比较3.下列关于线性表的基本操作中,属于加工型的操作是()A.初始化、求表长度、插入操作B.初始化、插入、删除操作C.求表长度、读元素、定位操作D.定位、插入、删除操作4.在一个单链表中,若p所指结点不是最后结点,s指向已生成的新结点,则在p 之后插入s所指结点的正确操作是()A.s–>next=p–>next; p–>next=B.p–>next=s–>next; s–>next=C.s–>next=p; p–>next=D.s–>next=p–>next; p=5.若有三个字符的字符串序列执行入栈操作,则其所有可能的输出排列共有()A.3种B.4种C.5种D.6种6.C语言对数组元素的存放方式通常采用()A.按行为主的存储结构B.按列为主的存储结构C.按行或列为主的存储结构D.具体存储结构无法确定7.根据定义,树的叶子结点其度数()A.必大于0B.必等于0C.必等于1D.必等于28.二叉树若采用二叉链表结构表示,则对于n个结点的二叉树一定有()A.2n个指针域其中n个指针为NULLB.2n个指针域其中n+1个指针为NULLC.2n-1个指针域其中n个指针为NULLD.2n-1个指针域其中n+1个指针为NULL9.在一个无向图中,所有顶点的度数之和等于边数的()A.1倍B.2倍C.3倍D.4倍10.若采用邻接表存储结构,则图的广度优先搜索类似于二叉树的()A.先根遍历B.中根遍历C.后根遍历D.层次遍历11.采用顺序查找法,若在表头设置岗哨,则正确的查找方式通常为()A.从第0个元素开始往后查找该数据元素B.从第1个元素开始往后查找该数据元素C.从第n个元素开始往前查找该数据元素D.从第n+1个元素开始往前查找该数据元素12.下列查找中,效率最高的查找方法是()A.顺序查找B.折半查找C.索引顺序查找D.分块查找13.索引文件通常由索引表和主文件两部分构成,其中()A.索引表和主文件均必须是有序文件B.索引表和主文件均可以是无序文件C.索引表必须是有序文件D.主文件必须是有序文件14.直接插入排序算法,其时间复杂性为()A.O(1)B.O(n)C.O(nlog2n)D.O(n2)15.下列排序方法中,属于稳定的排序方法是()A.直接插入排序法B.快速排序法C.冒泡排序法D.堆排序法二、填空题(本大题共13小题,每小题2分,共26分)请在每小题的空格中填上正确答案。
全国2010年1月高等教育自学考试数据结构导论试题课程代码:02142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下述文件中适合于磁带存储的是( A )A.顺序文件B.索引文件C.散列文件D.多关键字文件2.某二叉树的后根遍历序列为dabec,中根遍历序列为debac,则先根遍历序列为( D )A.acbedB.becabC.deabcD.cedba3.含有n个结点的二叉树用二叉链表表示时,空指针域个数为( C )A.n-1B.nC.n+1D.n+2 注:子域为2n个,有n-1个孩子。
4.在一个图中,所有顶点的度数之和与图的边数的比是( C)A.1∶2B.1∶1C.2∶1D.4∶15.长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( A)A.O(1)B.O(1og2n) 二分法注:若只有尾指针,那么入和出都为O(1)C.O(n) (入队)D.O(n2) -冒泡6.下述几种排序方法中,要求内存量最大的是( C )A.插入排序B.快速排序C.归并排序D.选择排序7.对n个不同值进行冒泡排序,在元素无序的情况下比较的次数为( D)A.n-1B.nC.n+1D.n(n-1)/28.对线性表进行二分查找时,要求线性表必须( C)A.以顺序方式存储B.以链式方式存储C.以顺序方式存储,且结点按关键字有序排列D.以链接方式存储,且结点按关键字有序排列9.在表长为n的顺序表上做删除运算,其平均时间复杂度为( B )A.O(1)B.O(n) 注:在双向循环链表中,删除最后一个结点C.O(nlog 2n)D.O(n 2) 的时间复杂度为O(1)10.当利用大小为n 的数组顺序存储一个队列时,该队列的最大容量为( B ) A.n-2 B.n-1 C.nD.n+111.有关插入排序的叙述,错误的...是( C ) A.插入排序在最坏情况下需要O(n 2)时间 B.插入排序在最佳情况可在O(n)时间内完成C.插入排序平均需要O(nlog 2n)时间 -----快速排序需要o (nlog2n )D.插入排序的空间复杂度为O(1) 12.有关树的叙述正确的是( C ) A.每一个内部结点至少有一个兄弟 B.每一个叶结点均有父结点 C.有的树没有子树D.每个树至少有一个根结点与一个叶结点。
2018年4月高等教育自学考试全国统一命题考试数据结构导论试卷(课程代码02142)本试卷共S页分100分,考试时间150分仲。
考生答・注意事呱:1.本卷所有试题必须在答题卡上作答。
答在试卷上无效,试卷空白处和背面均可作单稿城。
2.第一部分为选择题。
必疹对应试卷上的■[号使用2B归检将“答IS卡”的相应代码涂黑。
3.第二部分为非选择题。
必须注明大、小《8号,使用0.5充米黑色字迹签字篦作答。
4.合理安簿答题空间,超出答题区“无效。
第一部分选择题一、•里选择■:本大•共15小题,每小E2分,共30分.在♦小■列出的普选项中只有一『是♦符合■目戛求的,请将其选出•1.数累的逻辑结构分为四科,其中结构♦复杂的是瓦集a B∙线性脑构 C.树形砧构D.ff1.f⅛W2.下面程序是矩阵转置算法MM的实现过程.其时间复杂度为constintn=3∣voidMM(intA[n]Qn]){ inti,j.tempifor(i三0∣i<n∣i++)for<j-0∣i<i∣j++){temp-A[i][j]j A[iJD]-A[j][i].A[j][i]三tcmpt)),A.0(1) B.O(1.og,n) G0(n,)D.0(2">3.设原序次的次长为n,JHH除一个元索在最坏情配下元族移动次数为A.n—2B.n--!C.nD.n+i4.带头结点的双向神环转表1.为空的条件是 A.1.—>next==1.->prior R1.->prior==NU1.1. C. (1.->nex∣三三1.)‰8*.(1.->prior 三*三1.) D.(1.—>next 三三1.)8>∙⅛t(1.->prior 三NU1.1.)5.执行透枝操作,在元烹X 进校前需要进行的操作是 C 队列是一个非线性的序列 D.队列的IJ 点是先进先出7.设循环队列的元案存放在一维数组Q[30]中,队列非空时,front 指示队列首结点的帆一个位置,rear 指示队列见结点.如果队列中元京的个数为IOJront 的值为25,则rear 应指向的元素是A.Q[4] RQ[5]CQCU]D.Q[15]8.二又树第KiND 层上的结点敷最多为A.24-*Ri-IG2∙iD.2-G-D9 .关于二叉转表,下列叙述正确的是 A.二叉转奏是二又树曜一的钻式存储结构 B.对二又链表的访问可以从任意结点开始 C.好个二叉链表不需要有一个指向根节点的指针 D.二叉链裳的结点结构包含一个数据域和两个指针单10 .假设初始森林中共有nt∣二又树.AJ 棵树中都仅有一个孤立的站点.将该森林构造成哈夫受树,则最终求得的哈夫曼树的站点败为A.n —1B.nC.Zn -ID.2n11 .无向图中的极大连通子图是A.连通分量R 生成树C.强连通分量D.强连通图12 .在用邻接裳我示图时,对图进行深度优先费索遍历的算法的时向或杂度为A.0(n)B.0(n+e)CO(n*)D.O(n>)13 .静态去找表与动态森找表二者的根本差别在于A.它们的3?羯结构不同B.施加在其上的掾作不同C.所包才的数榭元案类8»不同D.存储实现不同A.判断栈是否清,若枝未滴.t 。
全国2010年10月高等教育自学考试数据结构导论试题课程代码:02142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下列描述中正确的是( C )A.数据元素是数据的最小单位------数据项是数据的最小单位B.数据结构是具有结构的数据对象C.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合D.算法和程序原则上没有区别,在讨论数据结构时两者是通用的2.归并排序的时间复杂度是( B) Array A.O(n2) B.O(nlog2n)C.O(n)D.O(log2n)3.二分查找的时间复杂度是( D )A.O(n2) B.O(nlog2n)C.O(n)D.O(log2n)4.顺序存储的表中有90000个元素,已按关键字值升序排列,假设对每个元素进行查找的概率相同,且每个元素的关键字值皆不相同,用顺序查找法查找时,需平均比较的次数为( C )A.25000 B.30000C.45000D.90000 注:为元素的一半5.散列文件是一种( D)A.顺序文件 B.索引文件C.链接文件D.计算寻址文件6.两个矩阵A:m×n,B:n×p相乘,其时间复杂度为( B )A.O(n) B.O(mnp)C.O(n2)D.O(mp)注:不同字母的乘积7.常用于函数调用的数据结构是( A)A.栈B.队列(常用于广度优先搜索)C.链表D.数组8.二维数组A[n][m]以列优先顺序存储,数组A中每个元素占用1个字节,A[1][1]为首元素,其地址为0,则元素A[i][j]的地址为( B )A.(i-1)×m+(j-1)—-----行B.(j-1)×n+(i-1) 注意是以1开头,因此-1.C.(j-1)×n+iD.j×n+I 行—前*后+后列---后*前+前9.图的广度优先搜索使用的数据结构是( A )A.队列 B.树C.栈(常用与函数调用)D.集合10.序列(21,19,37,5,2)经冒泡排序法由小到大排序,在第一次执行交换后所得结果为( A)A.(19,21,37,5,2) B.(21,19,5,37,2)C.(21,19,37,2,5)D.(2,21,19,37,5) 注:从前往后交换11.数据在计算机存储器内表示时,根据结点的关键字直接计算出该结点的存储地址,这种方法称为( D) A.索引存储方法(还需要增加附加索引) B.顺序存储方法(一组连续的存储单元存储线性表)C.链式存储方法(任意的存储单元,可以不连续)D.散列存储方法12.在单链表中,存储每个结点有两个域,一个是数据域,另一个是指针域,指针域指向该结点的( B ) A.直接前趋(数据域) B.直接后继C.开始结点D.终端结点13.在已知头指针的单链表中,要在其尾部插入一新结点,其算法所需的时间复杂度为( C)A.O(1)(出队) B.O(log2n)C.O(n)D.O(n2)14.在链队列中执行入队操作,( D)A.需判别队是否空 B.需判别队是否满C.限制在链表头p进行D.限制在链表尾p进行15.一整数序列26,59,77,31,51,11,19,42,以二路归并排序从小到大排序,第一阶段的归并结果为( B ) A.31,51,11,42,26,77,59,19 B.26,59,31,77,11,51,19,42C.11,19,26,31,42,59,51,77D.26,11,19,31,51,59,77,42注:归并过程1: 初始关键字:26 59 77 31 51 11 19 422.第一次归并:26 59 31 77 11 51 19 423.第二次归并:16 31 59 77 11 19 42 513.第三次归并:11 16 19 31 42 51 59 77二、填空题(本大题共13小题,每小题2分,共26分)请在每小题的空格中填上正确答案。
第一概论1.1 引言两项基本任务:数据表示,数据处理软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。
机外表示------逻辑结构------存储结构处理要求-----基本运算和运算-------算法1.2 数据,逻辑结构和运算数据:凡是能够被计算机存储,加工的对象通称为数据数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。
又称元素,顶点,结点,记录。
数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当做一个整体对待。
又称字段或域,是数据不可分割的最小标示单位。
1.2.2 数据的逻辑结构逻辑关系:是指数据元素之间的关联方式,又称“邻接关系”逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。
即数据的组织形式。
四种基本逻辑结构:1 集合:任何两个结点间没有逻辑关系,组织形式松散2 线性结构:结点按逻辑关系依次排列成一条“锁链”3 树形结构:具有分支,层次特性,形态像自然界中的树4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。
注意点:1.逻辑结构与数据元素本身的形式,容无关。
2.逻辑结构与数据元素的相对位置无关3.逻辑结构与所含结点个数无关。
运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。
加工型运算:改变了原逻辑结构的“值”,如结点个数,结点容等。
引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。
引用:查找,读取加工:插入,删除,更新同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。
假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。
将逻辑结构S和在S上的基本运算集X的整体(S,X)称为一个数据结构。
数据结构包括逻辑结构和处理方式。
1.3 存储实现和运算实现由于逻辑结构是设计人员根据解题需要选定的数据组织形式,因此存储实现建立的机表示应遵循选定的逻辑结构。
另一方面,由于逻辑结构不包括结点容即数据元素本身的表示,因此存储实现的另一主要容是建立数据元素的机表示。
按上述思路建立的数据的机表示称为数据的存储结构。
存储结构包括三部分:1.存储结点,每个存储结点存放一个数据元素。
2.数据元素之间关联方式的表示,也就是逻辑结构的机表示。
3.附加设施,如方便运算实现而设置的“哑结点”等。
四种基本存储方式:1.顺序存储方式:每个存储结点只含一个数据元素。
所有存储结点相继存放在一个连续的存储区里。
用存储结点间的位置关系表述数据元素之间的逻辑关系。
2.链式存储方式:每个存储结点不仅含有一个数据元素,还包含一组指针。
每个指针指向一个与本结点有逻辑关系的结点,即用附加的指针表示逻辑关系。
3.索引存储方式:每个存储结点只含一个数据元素,所有存储结点连续存放。
此外增设一个索引表,索引指示各存储结点的存储位置或位置区间端点。
4.散列存储方式:每个结点含一个数据元素,各个结点均匀分布在存储区里,用散列函数指示各结点的存储位置或位置区间端点。
1.3.2 运算实现运算只描述处理功能,不包括处理步骤和方法;运算实现的核心是处理步骤的规定,即算法设计。
算法:算法规定了求解给定问题所需的所有处理步骤及其执行顺序,使得给定类型的任何问题能在有限时间被机械的求解。
算法分类:1:运行终止的程序可执行部分:又称为程序2: 伪语言算法:不可以直接在计算机上运行,但容易编写和阅读。
3:非形式算法:用自然语言,同时可能还使用了程序设计语言或伪语言描述的算法。
1.4 算法分析算法质量评价指标:1.正确性:能够正确实现处理要求2.易读性:易于阅读和理解,便于调试,修改和扩充3.健壮性:当环境发生变化,算法能够适当做出反应或处理,不会产生不需要的运行结果4.高效率:达到所需要的时空性能。
一个算法的时空性能是指该算法的时间性能和空间性能,前者是算法包含的计算量,后者是算法需要的存储量。
算法在给定输入下的计算量:1.根据该问题的特点选择一种或几种操作作为“标准操作”。
2.确定每个算法在给定输入下共执行了多少次标准操作,并将此次数规定为该算法在给定输入下的计算量。
若无特殊说明,将默认以赋值语句作为标准操作。
最坏情况时间复杂性:算法在所有输入下的计算量的最大值作为算法的计算量平均时间复杂性:算法在所有输入下的计算量的加权平均值作为算法的计算量。
算法的输入规模(问题规模)是指作为该算法输入的数据所含数据元素的数目,或与此数目有关的其他参数。
常见时间复杂性量级:1.常数阶:O(1)即算法的时间复杂性与输入规模N无关或N恒为常数。
2.对数阶:Olog2 N3.线性阶:O(N)4.平方阶:O(N2)5.指数阶:O(2N次方)通常认为指数阶量级的算法实际是不可计算的,而量级低于平方阶的算法是高效率的第二章线性表2.1 线性表的基本概念线性结构:线性结构是N(N大于等于0)个结点的有穷序列。
A I 称为Ai+1的直接前趋,A i+1称为Ai 的直接后继。
为满足运算的封闭性,通常允许一种逻辑结构出现不线性结构的基本特征:若至少含有一个结点,则除起始节点没有直接前趋外,其他结点有且只有一个直接前趋,除终端结点没有直接后继外,其他结点有且只有一个直接后继。
2.1.2 线性表线性表的逻辑结构是线性结构。
所含结点个数称为线性表的长度(表长)。
表长为0的是空表。
线性表的基本运算:1.初始化initiate (L):加工型运算,其作用是建立一个空表L= 。
2.求表长length (L):引用型运算,其结果是线性表L的长度。
3.读表元get (L,i):引用型运算。
若1小于等于i小于等于length(L),其结果是L的第i个结点,否则为一特殊值。
4.定位(按值查找)locate(L,X):引用型运算。
若L中存在一个或多个值与X相等,结果为这些结点的序号最小值,否则,运算结果为0。
5.插入insert (L,X,i):加工型运算。
在L的第i个位置上增加一个值为X的新结点,参数i的合法取值围是1---L+1。
6.删除delete (L,i):加工型运算。
撤销L的第i个结点ai, i的合法取值围是1---N。
2.2 线性表的顺序实现2.2.1 顺序表顺序表是线性表的顺序存储结构,即按顺序存储方式构造的存储结构。
顺序表基本思想:顺序表的一个存储结点存储线性表的一个结点的容,即数据元素(不含其他信息),所有存储结点按相应数据元素间的逻辑关系决定的次序依次排列。
顺序表的特点:逻辑结构中相邻的结点在存储结构中仍相邻。
顺序表的类C语言描述:p17Const maxsize=顺序表的容量{ datatype date [maxsize]Int last;} sqlist;Sqlist L;L表示线性表的长度,last-1 是终端结点在顺序表中的位置。
常数maxsize为顺序表的容量。
表长st , 终端结点L.data[st-1]2.2.2 基本运算在顺序表上的实现1.插入Void inset_sqlist (sqlist L,datatype x, int i){ if (st == maxsize) error(‘表满’); /*溢出*/If (((i<1)!!(i>st+1)) error (‘非法位置’);For (j=st ; j=I; j--)L.data[j] = L.data [j-1]; /*依次后移*/L.data[i-1 ]= x; /*置入*/st =st+1 /*修改表长*/}2. 删除Void delete_sqlist ( sqlist L, int I ) /*删除顺序表L中第i个位置上的结点*/{If ( ( i<1 ) !! (I >st)) error (‘非法位置’);For ( j= i+1; j= st; j++)L.data [j-2 ] = L.data [j-1 ]; /*依次前移,注意第一个L.data[j-2]存放ai*/st=st-1 /*修改表长*//*在顺序表中从前往后查找第一个值等于X的结点。
若找到则回传该结点序号,否则回传0*/{I=1 ;While ( ( i<= st) && (L.data[i-1]!=x) ) /*注意:ai在L.data[i-1]中*/i++; /*从前往后查找*/if (i<=st) return (i)else return (0)}2.2.3 顺序实现的算法分析插入:平均时间复杂性:错误!未指定书签。
=n/2平均时间复杂性量级为O(n)删除:平均时间复杂性:n-1/2平均时间复杂性量级:O(n)定位:平均时间复杂性量级:O(n)求表长,读表元:量级O(1)以上分析得知:顺序表的插入,删除算法的时间性能方面是不理想的。
2.3 线性表的实现顺序表的优缺点:优点:1。
无需为表示结点间的逻辑关系而增加额外的存储空间。
2.可以方便地随机存取表中的任一结点。
缺点:1。
插入,删除运算不方便,除表尾位置外,其他位置上进行插入和删除操作都必须移动大量结点,效率较低。
2.由于顺序表要求占用连续的空间,存储分配职能预先进行(静态分配),因此当表长变化较大时,可能造成空间长期闲置或空间不够而溢出。
一种数据结构的实现是指按链式存储方式构建其存储结构,并在此链式存储结构上实现其基本运算。
2.3.1 单链表单链表表示法的基本思想:用指针表示结点间的逻辑关系。
一个存储结点包含两部分:data 部分: 称为数据域,用于存储线性表的一个数据元素。
Next部分:称为指针域或链域,用于存放一个指针,指向本结点所含数据元素的直接后继所在的结点终端结点的指针NULL称为空指针,不指向任何结点,只起标志作用。
Head称为头指针变量,指向单链表的第一个结点的,称为头指针。
头指针具有标识单链表的作用,故常用头指针变量来命链表。
单链表的类C语言描述:Typedef struct node *pointer;Struct node{ datatype data;Pointer next;};Typedef pointer lklist;2.3.2 单链表的简单操作为了便于实现各种运算,通常在单链表第一个结点前增设一个类型相同的结点,称为头结点。
其他结点称为表结点。
表结点中第一个和最后一个称为首结点和尾结点。
头结点的数据域可以不存储任何信息,也可以存放一个特殊标志或表长。
1 初始化:{t = malloc(size);t - > next = NULL;return(t); }此算法说明的问题:1.语句t = malloc(size); 有双重作用:1 由malloc自动生成一个类型为node的新结点。