自考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)为基本运算。

数据结构导论串讲笔记

数据结构导论串讲笔记

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]考过)【分析】按照给出的顺序存储结构,先绘制出一棵包括空结点的完全二叉树,然后去掉空结点就是所求的二叉树。

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

全国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(nlog2n)D.O(n2) 的时间复杂度为O(1)10.当利用大小为n 的数组顺序存储一个队列时,该队列的最大容量为( B )A.n-2B.n-1C.nD.n+1 11.有关插入排序的叙述,错误的...是( C)A.插入排序在最坏情况下需要O(n 2)时间B.插入排序在最佳情况可在O(n)时间内完成C.插入排序平均需要O(nlog 2n)时间-----快速排序需要o (nlog2n )D.插入排序的空间复杂度为O(1) 12.有关树的叙述正确的是( C)A.每一个内部结点至少有一个兄弟B.每一个叶结点均有父结点C.有的树没有子树D.每个树至少有一个根结点与一个叶结点。

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

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

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

自学考试《数据结构导论》串讲笔记
一、考试题型及分数分布情况:
1、选择题:共15小题,每小题2分,共30分。

2、填空题:共13小题,每小题2分,共26分。

选择题和填空题涵盖全书八章的内容,大部分章2道题,个别章1道题。

主要是考试大纲中要求“识记”和“领会”的内容,注重对基础知识的考核。

3、应用题:共6小题,每小题5分,共30分。

主要是考试大纲要求“简单应用”的内容。

全书可以以应用题的方式出考题的知识点共17类,在后面的讲解中,我将给大家详细讲解。

4、算法设计题:共2小题,每小题7分,共14分。

主要是考试大纲中要求“综合应用”的内容。

考核点主要集中在第2章的有关单链表的算法、第4章的二叉树遍历的有关算法和第8章的排序的相关算法。

二、学习建议:
1、在听每一章的串讲之前,认真阅读教材相关内容。

原因在于串讲语速快,考点堆积,需要对课程内容的熟知。

2、在听完每一章的串讲之后,要做参考书上该章的“同步训练”及历年考试真题涉及本章的题目。

(建议考生看一下机械工业出版社2005年5月出版的《数据结构导论学习辅导与真题解析》)。

3、全书可以以应用题的方式出考题的17类知识点(放一本小书,内
容是附件:十七类可能出应用题的考点.doc),每一个考点都要搜集整理
出一道典型的题目及题目的解答。

4、考生要尽量多搜集第2章的有关单链表的算法、第4章的二叉树
遍历的有关算法和第8章的排序的相关算法,多分析多写,做好充分准备。

5、最后做几套模拟试题,注意严格按正式考试进行,积累应对考试
的经验。

数据结构导论-自学考试-概念整理

数据结构导论-自学考试-概念整理

第一章概论第二章线性表第三章栈和队列第四章串第五章多维数组第六章树第七章图第八章排序第九章查找第一章概论1.数据:信息的载体,能被计算机识别、存储和加工处理。

2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。

3.数据结构:数据之间的相互关系,即数据的组织形式。

它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。

3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。

常用的运算:检索/插入/删除/更新/排序。

4.数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

数据的存储结构是逻辑结构用计算机语言的实现。

5.数据类型:一个值的集合及在值上定义的一组操作的总称。

分为:原子类型和结构类型。

6.抽象数据类型:抽象数据的组织和与之相关的操作。

优点:将数据和操作封装在一起实现了信息隐藏。

7. 抽象数据类型ADT:是在概念层上描述问题;类:是在实现层上描述问题;在应用层上操作对象(类的实例)解决问题。

8.数据的逻辑结构,简称为数据结构,有:(1)线性结构,若结构是非空集则仅有一个开始和终端结点,并且所有结点最多只有一个直接前趋和后继。

(2)非线性结构,一个结点可能有多个直接前趋和后继。

9.数据的存储结构有:1)顺序存储,把逻辑相邻的结点存储在物理上相邻的存储单元内。

2)链接存储,结点间的逻辑关系由附加指针字段表示。

3)索引存储,存储结点信息的同时,建立附加索引表,有稠密索引和稀疏索引。

4)散列存储,按结点的关键字直接计算出存储地址。

10.评价算法的质量:1正确性;算法应能正确地事先预定的功能。

2易读性;算法应易于阅读和理解,以便于调试和扩充。

3健壮性;当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果。

4高效率;即达到所需的时间和空间性能。

11.算法的时间复杂度T(n):是该算法的时间耗费,是求解问题规模n的函数。

自考数据结构导论复习资料

自考数据结构导论复习资料

数据结构导论复习第一章概论1.数据:凡能被计算机存储、加工处理的对象。

2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。

4.逻辑结构需要注意的几点:①逻辑结构与数据元素本身的内容无关②逻辑结构与数据元素相对位置无关③逻辑结构与所有结点的个数无关5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。

6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点?答:集合中任何两个结点之间都没有逻辑关系,组织形式松散;线性结构中结点按逻辑关系依次排列形成一条“锁链”;树形结构具有分支、层次特性,其形态有点像自然界中的树;图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。

7.运算是在逻辑结构层次上对处理功能的抽象8.基本运算的含义?答:假如Γ是S上的一些运算的集合,∆是Γ的一个子集,使得Γ中每一运算都可以“归约”为∆中的一个或多个运算,而∆中任一运算不可归约为别的运算,则称∆中运算为基本运算9.数据结构是指由一个逻辑结构S和S上的一个基本运算集∆构成的整体(S ,∆)。

10.数据结构涉及数据表示和数据处理两个方面11.存储结构的含义和四种基本存储方式的基本思想?答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。

一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。

存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。

12.运算实现与运算的联系与区别?答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。

13.算法的概念和分类?答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被机械地求解。

  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 单链表的简单操作为了便于实现各种运算,通常在单链表第一个结点前增设一个类型相同的结点,称为头结点。

相关文档
最新文档