自考02142数据结构导论串讲笔记

合集下载

全国2009年1月自考数据结构导论考试试题,答案,笔记分析

全国2009年1月自考数据结构导论考试试题,答案,笔记分析

全国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指示队尾元素。

自考02142《数据结构导论》串讲笔记

自考02142《数据结构导论》串讲笔记

第一张概论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数据结构导论试题及答案含评分标准

2020年10月自考02142数据结构导论试题及答案含评分标准

绝密★考试结束前
全国 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、
则通过栈的作用后可以得到的输出序列为。

2010年5月衔接自考02142数据结构导论复习资料472

2010年5月衔接自考02142数据结构导论复习资料472
试按照最小生成树的生成过程,分步给出加入顶点和边以后的集合U和TE的值
U={A,B,G} TE{(A,B),(A,G)}
U={A,B,G,I} TE{(A,B),(A,G),(G,I)}
U={A,B,G,I,E,} TE{(A,B),(A,G),(G,I),(I,E)}
29.排序算法中,第一趟排序后,任一元素都不能确定其最终位置的算法是 【 】
A.选择排序 B.插入排序
C.冒泡排序 D.快速排序
30.在排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)
的一端的方法,称为 【 】
A.希尔排序 B.归并排序
A.1 B.2
C.3 D.4
14.排序算法中,第一趟排序后,任一元素都不能确定其最终位置的算法是 【 】
A.选择排序 B.快速排序
C.冒泡排序 D.插入排序
15.排序算法中,不稳定的排序是 【 】
A.直接插入排序 B.冒泡排序
C.堆排序 D.归并排序
7.n-1 8.1 9. 10.索引表 11.顺序 12.8
13.O(n2)
U={A,B,G,I,E,D} TE{(A,B),(A,G),(G,I),(I,E),(E,D)}
U={A,B,G,I,E,D,C} TE{(A,B),(A,G),(G,I),(I,E),(E,D),(D,C)}
U={A,B,G,I,E,D,C,H} TE{(A,B),(A,G),(G,I),(I,E),(E,D),(D,C),(C,H )}
25.有4个顶点的无向完全图的边数为 【 】
A.6 B.12
C.16 D.20
26.设图的邻接矩阵为,则该图为 【 】

2023年10月自考02142数据结构导论试题及答案含评分标准

2023年10月自考02142数据结构导论试题及答案含评分标准

绝密 考试结束前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; }分)。

数据结构导论串讲笔记

数据结构导论串讲笔记

1)已知出栈序列,写出可能的入栈序列并分析操作过程。

2)已知入栈序列,写出可能的出栈序列并分析操作过程。

[2004/1]如下图所示,输入元素为(A ,B ,C ),在栈的输出端得到一个输出序列ABC ,求出在栈的输入端所有可能的输入序列。

【分析】A ,B ,C 三个字符排成的序列可以有:ABC 、ACB 、BAC 、BCA 、CAB 、CBA 六种,按堆栈操作的先进后出(或后进先出)的原则,只有输入序列为BCA 时,输出无法得到ABC 。

因为输入序列为BCA 时,要想先输出A ,必须BCA 均入栈,但这样只能得到序列ACB 。

其余五种输入序列都可在输出端得到序列ABC。

【解答】ABC 、ACB 、BAC 、CAB 、CBA 2.队列的操作分析顺序队中元素入队出队操作及队列的状态。

(考过)[2003/10]设有一顺序队列sq ,容量为5,初始状态时sq .front=sq .rear=0,画出做完下列操作后队列及其头尾指针的状态变化情况,若不能入队,请简述其理。

(1) d ,e ,b 入队 (2) d ,e 出队 (3) i ,j 入队 (4) b 出队 (5) n ,o ,p 入队【解答】队列及其头尾指针的状态变化情况如下图所示(a )初态 (b )d ,e ,b 入队 (c ) d ,e 出队 (d ) i ,j 入队 (e )b 出队第5步操作无法进行,因队列已满。

3.二叉树的存储结构1) 给出一棵二叉树,画出二叉链表示意图及顺序存储示意图。

([2000/10] [2003/10] [2004/10]考过)[2003/10]画出下列二叉树的二叉链表表示图。

Sq.frontSq.rearSq.front Sq.rear Sq.rearSq.front Sq.rear【解答】二叉树的二叉链表表示2) 给出二叉树的顺序存储示意图,画出二叉树。

([2005/1]考过)【分析】按照给出的顺序存储结构,先绘制出一棵包括空结点的完全二叉树,然后去掉空结点就是所求的二叉树。

自学考试_全国2015年10月高等教育自学考试数据结构导论试题(02142)

自学考试_全国2015年10月高等教育自学考试数据结构导论试题(02142)

绝密 考试结束前全国2015年10月高等教育自学考试数据结构导论试题课程代码:02142请考生按规定用笔将所有试题的答案涂㊁写在答题纸上㊂选择题部分注意事项:1.答题前,考生务必将自己的考试课程名称㊁姓名㊁准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上㊂每小题选出答案后,用铅笔把答题纸上对应题目的答案标号涂黑㊂如需改动,用橡皮擦干净后,再选涂其他答案标号㊂不能答在试题卷上㊂一㊁单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将 答题纸 的相应代码涂黑㊂错涂㊁多涂或未涂均无分㊂1.能正确地实现预定的功能,满足具体问题的需要 ㊂这种评价算法好坏的因素称为A.正确性B .易读性C .健壮性 D.时空性2.有一程序片段:{i =0;s =0;w h i l e (s <=n ){i ++;s =s +i ;}},其时间复杂度是A.O (n)B .O (2n)C .O (n1/2) D.O (1)题3图3.在如题3图所示的数组A 中链接存储了一个线性表,表头指针为A [0].n e x t ,则该线性表中第一个数据元素的值是A.60B .50C .78D.404.在一个长度为n (n >1)的单链表上,设有头和尾两个指针,以下操作与链表长度有关的是A.删除单链表中的第一个元素题5图B .删除单链表中的最后一个元素C .在单链表中第一个元素前插入一个新元素D.在单链表中最后一个元素后插入一个新元素5.某双向链表中的结点如题5图所示,删除t 所指结点的操作为A.t ->p r i o r ->p r i o r =t ->n e x t ;t ->n e x t ->p r i o r =t ->p r i o r;B .t ->p r i o r ->p r i o r =t ->p r i o r ;t ->n e x t ->n e x t =t ->n e x t;C .t ->p r i o r ->n e x t =t ->p r i o r ;t ->n e x t ->p r i o r =t ->n e x t;D.t ->p r i o r ->n e x t =t ->n e x t ;t ->n e x t ->p r i o r =t ->p r i o r;6.下列关于栈和队列的叙述中:Ⅰ栈和队列都是线性表;Ⅱ栈和队列都是顺序表;Ⅲ栈和队列都不能为空;Ⅳ栈和队列都能用于递归过程实现;Ⅴ栈的特点是先进后出㊁队列的特点是先进先出,其中正确的是A.Ⅰ和ⅤB.Ⅰ㊁Ⅱ㊁ⅤC.Ⅲ和ⅤD.Ⅱ㊁Ⅳ㊁Ⅴ7.二维数组A按行序优先顺序存储,每个数据元素占1个存储单元㊂若数据元素A[1][1]的存储地址是420,A[3][3]的存储地址是446,则A[5][5]的存储地址是A.470B.471C.472D.4738.若对一棵含有199个结点的完全二叉树按自上而下㊁从左到右依次对结点编号,根结点的编号为1,则树中最后一个结点(即编号为199)的双亲结点的编号为A.99B.100C.101D.1989.对长度为15的有序顺序表进行二分查找,在各记录的查找概率均相等的情况下,查找成功时平均查找长度()为A.3915B.4915C.5115D.551510.在如题10图所示的有向图中,从顶点1出发进行深度优先搜索可得到的结果序列是题10图A.1423B.1432C.1342D.124311.设森林F中有三棵树,其结点的个数分别为m1㊁m2㊁m3,则与F对应的二叉树根结点的右子树上的结点数是A.m1+m2B.m2+m3C.m1+m3D.m1+m2+m312.假设通信电文使用的字符集为{a,b,c,d,e,f},各字符在电文中出现的频率分别为{34,5, 12,23,8,18},利用构造H u f f m a n树对每个字符进行编码,则其中编码长度最长的字符是A.a,bB.a,dC.b,eD.e,f13.元素的进栈次序为A,B,C,D,E,出栈的第一个元素为E,则第四个出栈的元素为A.DB.CC.BD.A14.平均时间复杂度和在最坏情况下的时间复杂度均是O(n l o g2n)的排序算法是A.插入排序B.快速排序C.选择排序D.堆排序15.在待排记录中其关键字序列基本有序的前提下,时间效率最高的排序方法是A.直接插入排序B.快速排序C.选择排序D.堆排序非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上㊂二㊁填空题(本大题共13小题,每小题2分,共26分)16.数据的存储结构又称为物理结构,可分为顺序存储㊁链式存储㊁以及散列存储等几种方式㊂17.一般说来,在每个逻辑结构上都定义了一组基本运算,通常这些运算包括:建立㊁㊁读取㊁插入和删除等㊂18.某带有头结点的单链表的头指针为h e a d,则判断该单链表为非空的条件是19.数组Q[n]表示一个循环队列,设f的值为队列中第一个元素的位置,r的值为队列中实际队尾的位置加1,并假定队列中最多只有n-1个元素,则计算队列中元素个数的公式是㊂20.稀疏矩阵可以采用方法进行压缩存储㊂21.含有n个结点的完全二叉树中度为1的结点的个数最多为㊂22.高度(深度)为k的二叉树中结点个数最多是2k-1㊁最少是㊂23.对于有n个顶点的无向图,所有生成树中都有且仅有条边㊂24.设散列表的地址空间为0到12,散列函数为h(k)=km o d13,用线性探测法解决冲突㊂现要将关键字序列{10,100,32,45,58,128,3,29,200,400,0}映射到该散列表中,则其中关键字值58的地址为㊂25.假设有K个关键字互为同义词,若用线性探测法把这K个关键字用散列函数H将它们存入长度为m的散列表中(Kɤm),则至少共需进行次探测㊂26.在关键字序列{07,12,15,18,27,32,41,92}中用二分法查找和给定值92相等的关键字,在查找过程中依次和给定值92比较的关键字是㊂27.影响排序算法时间复杂度的两个因素是关键字的次数和记录的移动次数㊂28.在直接插入㊁直接选择和冒泡这三种排序方法中,不稳定的排序方法是㊂三㊁应用题(本大题共5小题,每小题6分,共30分)29.设栈S和队列Q的初始状态均为空,7个元素a b c d e f g依次进入栈S㊂若每个元素出栈后立即进入队列Q,且7个元素出队的顺序是b d c f e a g㊂现要求:(1)栈S的容量至少是多少?(2)在(1)的情况下,画出该栈中元素最多时的一个状态示意图㊂30.某二叉树结点的中序遍历序列为A B C D E F G ㊁后序遍历序列为B D C A F G E ,现要求:(1)画出该二叉树;(2)写出该二叉树的先序遍历序列;(3)该二叉树所对应的森林包括几棵树?题32图31.假设有一棵完全二叉树按自上而下㊁从左到右的层序组织包含A ㊁B ㊁C ㊁D ㊁E ㊁F ㊁G 这7个结点,分别给出其邻接矩阵和邻接表㊂32.要求给出至少2个不同的关键字序列,均能构造出如题32图所示的二叉排序树;对此你会得出什么结论?33.采用快速排序方法对关键字序列{265,301,751,129,937,863,742,694,076,438}进行升序排序,写出其每趟排序结束后的关键字序列㊂四㊁算法设计题(本大题共2小题,每小题7分,共14分)写出复制一棵二叉树的算法㊂设原二叉树根结点由指针指向,复制得到的二叉树根结点由指针n e w r o o t 指向,函数头为:v o i dC o p y T r e e (B T N o d e*r o o t ,B T N o d e*n e w r o o t ),二叉树的存储结构为:t y pe d ef s t r u c t b t n o d e {D a t a T y pe d a t a ;s t r u c t b t n o d e*l c h i l d ,*r c h i l d ;}B T N o d e ,*B T r e e;35.已知带头结点的单链表L 是按数据域值非递减有序链接的,试写一算法将值为x 的结点插入表L 中,使得L 仍然是有序链接的㊂。

浙江省2001年10月自学考试数据结构导论试题及答案

浙江省2001年10月自学考试数据结构导论试题及答案

浙江省2001年10月自学考试数据结构导论试题课程代码:02142一、单项选择题(在每小题的四个备选答案中选出一个正确答案,并将其号码填在题干的括号内。

每小题1分,共14分)1.算法分析的目的是( )A.找出数据结构的合理性B.研究算法中的输入/输出关系C.分析算法的效率以求改进D.分析算法的易读性2.在需要经常查找结点的前驱与后继的场合中,使用( )比较合适。

A.单链表B.双链表C.顺序表D.循环链表3.下面关于线性表的叙述中,错误的为( )A.顺序表使用一维数组实现的线性表B.顺序表必须占用一片连续的存储单元C.顺序表的空间利用率高于链表D.在链表中,每个结点只有一个链域4.带头结点的单链表head为空的判断条件是( )A. head=NILB. head↑.next=NILC. head↑.next=headD. head< >NIL5.队列通常采用两种存储结构是( )A.顺序存储结构和链表存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构6.按照二叉树的定义,具有3个结点的二叉树有( )A.3B.4C.5D.67.二叉树的结构如下图所示,其中序遍历的序列为( )A.a,b,d,g,c,e,f,hB.d,g,b,a,e,c,h,fC.g,d,b,e,h,f,c,aD.a,b,c,d,e,f,g,h8.深度为5的二叉树至多有( )个结点。

A.16B.32C.31D.109.对于一个具有n个顶点的无向图,若采用邻接表表示,则存放表头结点的数组的大小为( )A.nB.n+1C.n-1D.n+边数10.在一个具有n个顶点的无向图中,要连通全部顶点至少需要( )条边。

A.nB.n+1C.n-1D.n/211.静态查找表与动态查找表二者的根本差别在于( )A.它们的逻辑结构不一样B.施加在其上的操作不同C.所包含的数据元素的类型不一样D.存储实现不一样12.散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。

全国2010年1月自考数据结构导论考试试题,答案,笔记

全国2010年1月自考数据结构导论考试试题,答案,笔记

全国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.每个树至少有一个根结点与一个叶结点。

全国2013年1月高等教育自学考试 数据结构导论试题 课程代码02142

全国2013年1月高等教育自学考试 数据结构导论试题 课程代码02142

绝密★考试结束前全国2013年1月高等教育自学考试数据结构导论试题课程代码:02142请考生按规定用笔将所有试题的答案涂、写在答题纸上。

选择题部分注意事项:1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。

2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。

如需改动,用橡皮擦干净后,再选涂其他答案标号。

不能答在试题卷上。

一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。

错涂、多涂或未涂均无分。

1.数据的基本单位是A.数据元素B.数据项C.字段D.域2.算法的空间复杂度是指A.算法中输入数据所占用的存储空间的大小B.算法本身所占用的存储空间的大小C.算法中所占用的所有存储空间的大小D.算法中需要的辅助变量所占用存储空间的大小3.从一个长度为100的顺序表中删除第30个元素,需向前移动的元素个数为A.29B.30C.70D.71浙02142# 数据结构导论试题第1页(共5页)浙02142# 数据结构导论试题 第2页(共5页)4.若线性表最常用的操作是存取第i 个元素及其后继的值,则最节省操作时间的存储结构是A.单链表B.双链表C.单循环链表D.顺序表5.判断链栈LS 是否为空的条件是A.LS->next= =LSB.LS->next= =NULLC.LS! =NULLD.LS= =NULL 6.关于链队列的运算说法正确的是A.入队列需要判断队列是否满B.出队列需要判断队列是否空C.入队列需要判断队列是否空D.出队列需要判断队列是否满 7.元素的进栈次序为A,B,C,D,E,则出栈中不可能...的序列是 A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A8.具有63个结点的完全二叉树是A.满二叉树B.二叉排序树C.哈夫曼树D.空树 9.将含有80个结点的完全二叉树从根这一层开始,每层从左到右依次对结点编号,根结点的编号为1。

自考数据结构导论 02142第二章 线性表

自考数据结构导论  02142第二章 线性表
1,初始化 2,求表长度 3,取表元 4,定位 5,插入 6,删除 Initiate(L) Length(L) Get(L,i) Locate(L,x) Insert(L,x,i) Delete(L,i)
区分引用型和加工型操作
11
2.2 线性表的顺序实现
定义 顺序表是线性表的顺序存储存储结构,即 以一段连续内存存放的线性表 此时, 内存的顺序性体现了数据间的逻辑关系 线性表中相邻的结点在存储结构中仍相邻
//学号 //姓名 //性别 //年龄 //班级 //成绩
数据项为一个整体
17
1、结构体类型的定义
struct 结构体类型名 { 数据类型名1 成员名1; 数据类型名2 成员名2; …… 数据类型名n 成员名n; };
struct是关键字, 不能省略 成员类型可以是 基本型或构造型
合法标识符 可省:无名结构体
第 二 章
线 性 表
1
第2章 线性表
2.1 2.2 2.3 2.4 2.5 2.6 2.7 线性表的基本概念 线性表的顺序存储 线性表的链接存储 其它运算在单链表上的实现 其它链表 顺序实现与连接实现的比较 小结
2
3
本章总述
本章主要讨论了线性表及它的两种存储实现:顺序实现和 链接实现;另外,简单介绍了串这种特殊的线性表的运算和存 储实现。
内存映像 (BC下)
20
2、结构体变量的定义和引用 结构体变量的定义 直接定义法:定义结构体类型的同时定义结构体变量
struct [结构体类型名] { 数据类型名1 成员名1; …… 数据类型名n 成员名n; } 变量名列表;
struct Student_Info { char no[9]; char name[20]; char sex; unsigned int age; unsigned int classno; float grade; } student1, student2;

全国2010年10月自考数据结构导论考试试题,答案,笔记

全国2010年10月自考数据结构导论考试试题,答案,笔记

全国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分)请在每小题的空格中填上正确答案。

自考数据结构笔记(超级详细 可做考试条)

自考数据结构笔记(超级详细 可做考试条)

自考数据结构笔记(详尽版)感谢热心自考人:liuii322笔记特点:图例丰富,超级详细,几乎涵盖本课程所有要求掌握的知识点,。

用于复习和做小条概论- 学习数据结构的意义 (2)概论- 算法的描述和分析(一) (3)线性表 - 链式存储结构- 单链表的运算(一) (7)三栈和队列 - 栈 - 栈的定义及基本运算 (13)三栈和队列 - 队列 - 队列的定义及基本运算 (15)三栈和队列 - 队列 - 顺序队列 (15)栈和队列 - 队列 - 链队列 (16)三栈和队列 - 栈和队列的应用实例 - 栈的应用实例(一) (17)四—串的基本概念(一) (19)图 - 图的概念(一) (41)图 - 图的存储结构 - 邻接矩阵表示法 (44)图 - 图的遍历 - 深度优先遍历(一) (48)图 - 图的遍历 - 广度优先遍历(一) (50)图 - 生成树和最小生成树 - 生成树 (52)图 - 生成树和最小生成树 - 最小生成树(一) (53)图 - 最短路径(一) (55)图 - 拓扑排序(一) (56)排序 - 排序基本概念(一) (57)排序 - 插入排序 - 直接插入排序(一) (58)排序 - 插入排序 - 直接插入排序(二) (59)排序 - 插入排序 - 希尔排序 (59)排序 - 交换排序 - 冒泡排序(一) (60)排序 - 交换排序 - 快速排序(一) (62)排序 - 选择排序 - 堆排序(一) (64)排序 - 归并排序(一) (65)排序 - 分配排序 - 基数排序 (67)排序 - 各种内部排序方法的比较和选择(一) (68)查找 - 查找的基本概念 (69)查找-线性表的查找-顺序查找 (69)查找 - 线性表的查找 - 二分查找(一) (70)查找 - 线性表的查找 - 分块查找 (71)查找 - 树上的查找 - 二叉排序树(一) (72)查找 - 树上的查找 - B-树 (75)查找 - 散列技术 - 散列表的概念 (79)查找 - 散列技术 - 散列函数的构造方法 (80)文件- 文件的基本概念(一) (80)文件 - 顺序文件 (82)文件 - 索引文件(一) (82)文件 - 索引顺序文件 - ISAM文件(一) (83)文件 - 索引顺序文件 - VSAM文件(一) (85)文件 - 散列文件 (86)文件 - 多关键字文件 - 多重表文件 (87)文件 - 多关键字文件 - 倒排文件 (87)概论--基本概念和术语数据:数据:指能够被计算机识别、存储和加工处理的信息载体。

自考数据结构导论__02142_第一章_概论

自考数据结构导论__02142_第一章_概论
数据结构导论
主讲:赖益强


《数据结构导论》是计算机科学与技术专业的一门必修课
程。本课程介绍如何组织各种数据在计算机中的存储、传递和
转换。 内容包括:线性表、栈、队列、数组、树、二叉树、图等基
本数据结构及其应用;排序和查找的原理与方法;数据在外存
上的组织方法。
2
第1章 概论
1.1引言 1.2基本概念和术语 1.3算法及描述 1.4算法分析
C语言概述
简单的C语言程序介绍
C语言程序 例1:/*example1.c*/屏幕上显示一句话 函数声明 main ( ) 部分 { printf("This is a C program.\n"); 函数体 } C程序由函数组成

运行结果是在屏幕上显示: This is a C program.
思考:
21


存储结构的分类: 顺序结构

顺序的方法: 将元素存储到一片连续的存储区 .
姓名和电话号码数据
22
存储结构的分类: 链式结构
这种结构是给结点附加一个指针字段, 指出其后继节点的位 置, 即存放结点的存储单元分为两部分: 特点: 1)动态分配,不需要预先确定内存分配; 2)插入和删除不需要移动其他元素; 3)非随机存取结构。
3
本章总述
要求熟悉各名词、术语的含义,掌握基本概念。
包括数据、数据元素、数据项、逻辑关系和逻辑结构、
运算和基本运算、数据结构、存储方式和存储结构、 算法及算法分析等。注意这些概念之间的联系。
本章重点 逻辑结构和数据结构的概念。 本章难点 算法的时间复杂性分析。
4
5
1.1
1.数据结构的概念

数据结构导论串讲笔记(计算机及应用)

数据结构导论串讲笔记(计算机及应用)

数据结构导论串讲笔记(计算机及应用)自考操作系统笔试题汇总(附答案)在下列系统中,()是实时系统。

a.计算机激光照排系统b.航空定票系统c.办公自动化系统d.计算机辅助设计系统答案:b2.操作系统是一种()。

a.应用软件b.系统软件c.通用软件d.工具软件答案:b3.引入多道程序的目的在于()。

a.充分利用cpu,增加cpu等待时间b.提升实时响应速度c.有助于代码共享资源,增加主、辅存信息交换量d.充分利用存储器答案:a4.已经获得除()以外的所有运行所需资源的进程处于就绪状态a.存储器b.打印机c.cpud.磁盘空间答案:c5.进程调度的关键问题:一就是挑选合理的(),二就是恰当地展开代码切换a.时间片间隔b.调度算法c.cpu速度d.内存空间答案:b6.采用轮转法调度是为了():a.多个终端都能够获得系统的及时积极响应b.先来先服务c.优先级较高的进程得到及时调度d.需cpu最短的进程先做答案:a7.在一段时间内只容许一个进程出访的资源,称作()a.共享资源b.临界区c.临界资源d.共享资源区答案:c8.并发性是指若干事件在()发生a.同一时刻b.同一时间间隔内c.相同时刻d.相同时间间隔内答案:b9.在单一处理器上,将执行时间有重叠的几个程序称为()a.顺序程序b.多道程序c.并发程序d.并行程序答案:c10.程序运行时,独霸系统资源,只有程序本身能够发生改变系统资源状态,这就是指()a.程序顺序继续执行的重现性b.程序顺序继续执行的封闭性c.并发程序丧失封闭性d.并发程序丧失重现性答案:b11.引人多道程序技术以后,处理器的利用率()a.减少了b.有所改善c.大大提高d.没变化,只是程序的继续执行便利了.答案:c12.在单一处理器上执行程序,多道程序的执行是在()进行的。

a.同一时刻b.同一时间间隔内c.某一紧固时刻d.某一紧固时间间隔内答案:b13.为了使多个进程能有效地同时处理输入和输出,最好使用()a.缓冲区b.闭合缓冲区环c.多缓冲区d.双缓冲区答案:a14.在进程通信中,()常通过变量、数组形式来实现。

【历年自考真题6套】数据结构导论02142试题(2015年10月-2020年8月)

【历年自考真题6套】数据结构导论02142试题(2015年10月-2020年8月)

A. 二叉链表是二叉树唯一的链式存储结构
B. 对二叉链表的访问可以从任意结点开始
C. 每个二叉链表不需要有一个指向根节点的指针
D. 二叉链表的结点结构包含一个数据域和两个指针域
10. 假设初始森林中共有 n 棵二叉树,每棵树中都仅有一个孤立的结点。 将该森林构造成哈夫
曼树,则最终求得的哈夫曼树的结点数为
A. n-1
B. n
C. 2n-1
D. 2n
11. 无向图中的极大连通子图是
A. 连通分量
B. 生成树
C. 强连通分量
D. 强连通图
12. 在用邻接表表示图时,对图进行深度优先搜索遍历的算法的时间复杂度为
A. O(n)
B. O(n+e)
C. O(n2)
D. O(n3)
浙 02142# 数据结构导论试题 第 2 页( 共 5 页)
位置,rear 指示队列尾结点。 如果队列中元素的个数为 10,front 的值为 25,则 rear 应指向的
元素是
A. Q[4]
B. Q[5]
C. Q[14]
D. Q[15]
8. 二叉树第 i( i逸1) 层上的结点数最多为
A. 2i-1
B. i-1
C. 2*i
D. 2*(i-1)
9. 关于二叉链表,下列叙述正确的是
const int n = 3;
void MM( int A[ n] [ n] )
{ 摇 摇 int i,j,temp;
for( i = 0;i<n;i++)
for( j = 0;j<i;j++)
摇 摇 摇 { 摇 temp = A[ i] [ j] ;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一张概论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=顺序表的容量Typedef struct{ 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 /*修改表长*/3.定位Int locate_sqlist (sqlist L , datatype X)/*在顺序表中从前往后查找第一个值等于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 单链表的简单操作为了便于实现各种运算,通常在单链表第一个结点前增设一个类型相同的结点,称为头结点。

相关文档
最新文档