2022年数据结构概念整理参考 .pdf
《2022年数据结构概念整理参考 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构概念整理参考 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章1、数据(Data)数据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、图形、图像、声音等。2、数据元素(Data Element)和数据项(Data Item)数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑和处理。数据元素有时也被称为元素、结点、顶点、记录等。一个数据元素可由若干个数据项(Data Item)组成。数据项是不可分割的、含有独立意义的最小数据单位,数据项有时也称为字段(Field)或域(Domain)。数据项分为两种,一
2、种叫做初等项,另一种叫做组合项。3、数据对象(Data Object)数据对象是性质相同的数据元素的集合,是数据的一个子集。4、数据类型(Data Type)数据类型是高级程序设计语言中的概念,是数据的取值范围和对数据进行操作的总和。数据类型可分为两类:一类是非结构的原子类型,如C#语言中的基本类型(整型、实型、字符型等);另一类是结构类型,它的成分可以由多个结构类型组成,并可以分解。结构类型的成分可以是非结构的,也可以是结构的。5、数据结构(Data Structure)数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这
3、种关系称为结构(Structure)。根据数据元素之间关系的不同特性,通常有4类基本数据结构:(1)集合(Set);(2)线性结构(Linear Structure);(3)树形结构(Tree Structure);(4)图状结构(Graphic Structure)。数据结构的形式化定义为:数据结构(Data Structure)简记为 DS,是一个二元组,DS=(D,R)其中:D 是数据元素的有限集合,R 是数据元素之间关系的有限集合。数据结构包括数据的逻辑结构和物理结构。数据的物理结构又称为存储结构(Storage Structure),是数据在计算机中的表示(又叫映像)和存储,包括数据
4、元素的表示和存储以及数据元素之间关系的表示和存储。数据的存储结构包括顺序存储结构和链式存储结构两种。顺序存储结构(Sequence Storage Structure)是通过数据元素在计算机存储器中的相对位置来表示出数据元素的逻辑关系,一般把逻辑上相邻的数据元素存储在物理位置相邻的存储单元中。在C#语言中用数组来实现顺序存储结构。因为数组所分配的存储空间是连续的,所以数组天生就具有实现数据顺序存储结构的能力。链式存储结构(Linked Storage Structure)对逻辑上相邻的数据元素不要求其存储位置必须相邻。链式存储结构中的数据元素称为结点(Node),在结点中附设地址域(Addre
5、ss Domain)来存储与该结点相邻的结点的地址来实现结点间的逻辑关系。这个地址称为引用(Reference),这个地址域称为引用域(Reference Domain)。6.算法从上节我们知道,算法与数据结构和程序的关系非常密切。进行程序设计时,先确定相应的数据结构,然后再根据数据结构和问题的需要设计相应的算法。由于篇幅所限,下面只从算法的特性、算法的评价标准和算法的时间复杂度等三个方面进行介绍。1.2.1算法的特性名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -算法(Algorithm)是对某一特定类型的问题的求解步骤的一种描述,是指令的有限序列。其中的每条指令表示
6、一个或多个操作。一个算法应该具备以下5个特性:1)、有穷性(Finity):一个算法总是在执行有穷步之后结束,即算法的执行时间是有限的。2)、确定性(Unambiguousness):算法的每一个步骤都必须有确切的含义,即无二义,并且对于相同的输入只能有相同的输出。3)、输入(Input):一个算法具有零个或多个输入。它即是在算法开始之前给出的量。这些输入是某数据结构中的数据对象。4)、输出(Output):一个算法具有一个或多个输出,并且这些输出与输入之间存在着某种特定的关系。5)、能行性(realizability):算法中的每一步都可以通过已经实现的基本运算的有限次运行来实现。算法的含义
7、与程序非常相似,但二者有区别。一个程序不一定满足有穷性。例如操作系统,只要整个系统不遭破坏,它将永远不会停止。还有,一个程序只能用计算机语言来描述,也就是说,程序中的指令必须是机器可执行的,而算法不一定用计算机语言来描述,自然语言、框图、伪代码都可以描述算法。7.算法的时间复杂度一个算法的时间复杂度(Time Complexity)是指该算法的运行时间与问题规模的对应关系。一个算法是由控制结构和原操作构成的,其执行的时间取决于二者的综合效果。8.集合的概念集合(Set)是由一些确定的、彼此不同的成员(Member)或者元素(Element)构成的一个整体。成员取自一个更大的范围,称为基类型(B
8、ase Type)。集合中成员的个数称为集合的基数(Cardinality)。集合的每个成员或者是基类型的一个基本元素(Base Element),或者它本身也是一个集合。我们把是集合的成员叫做该集合的子集(Subset),子集中的每个成员都属于该集合。没有元素的集合称为空集(Empty Set,又称为 Null Set),记作。集合的特性1)确定性:任何一个对象都能被确切地判断是集合中的元素或不是;2)互异性:集合中的元素不能重复;3)无序性:集合中元素与顺序无关。9.递归一个算法调用自己来完成它的部分工作,在解决某些问题时,一个算法需要调用自身。如果一个算法直接调用自己或间接地调用自己,就
9、称这个算法是递归的(Recursive)。根据调用方式的不同,它分为直接递归(Direct Recursion)和间接递归(Indirect Recursion)。10.接口1)、接口的定义接口(Interface)定义为一个约定,实现接口的类或结构必须遵守该约定。简单的说,接口是类之间交互时遵守的一个协议。这种将一个对象看成多个类型的能力通常称作多继承(Multiple Inheritance)。通用语言运行时(CLR)支持单实现继承和多接口继承。单实现继承(Single Implementation Inheritance)是指一个类型只能有一个基类型。多接口继承(Multiple Int
10、erface Inheritance)是指一个类型可以继承多个接口,而接口是类之间相互交互的一个抽象(Abstract),把类之间需要交互的内容抽象出来定义成接口,可以更好地控制类之间的逻辑名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -交互。接口只包含成员定义,不包含成员的实现。接口不会继承自任何的System.Object 派生类型。接口仅仅是一个包含着一组虚方法的抽象类型。成员的实现需要在继承的类或者结构中实现。接口的成员包括静态方法、索引器、常数、事件以及静态构造器等,不包含任何实例字段或实例构造器,所以,不能实例化一个接口。实现接口的类必须严格按其定义来实现接
11、口的每个成员。11.接口与抽象类抽象类(Abstract Class)和接口在定义与功能上有很多相似的地方,在程序中选择使用抽象类还是接口需要比较抽象类和接口之间的具体差别。抽象类是一种不能实例化而必须从中继承的类,抽象类可以提供实现,也可以不提供实现。子类只能从一个抽象类继承。抽象类应主要用于关系密切的对象。如果要设计大的功能单元或创建组件的多个版本,则使用抽象类。接口是完全抽象的成员集合,不提供实现。类或者结构可以继承多个接口。接口最适合为不相关的类提供通用功能。如果要设计小而简练的功能块,则使用接口。接口一旦创建就不能更改,如果需要接口的新版本,必须创建一个全新的接口。12.泛型编程泛型
12、(Generic Type)是.NET Framework 2.0 最强大的功能。泛型的主要思想就是将算法与数据结构完全分离开来,使得一次定义的算法能够作用于多种数据结构,从而实现高度可重用的开发。通过泛型可以定义类型安全的数据结构,而没有必要使用实际的数据类型。这将显著提高性能并得到更高质量的代码,因为可以重用数据处理算法,而没有必要复制类型特定的代码。(1)性能问题。(2)类型安全。(3)工作效率。13.泛型的好处泛型使代码可以重用,类型和内部数据可以在不导致代码膨胀的情况下更改,而不管是值类型还是引用类型。可以一次性地开发、测试和部署代码,通过任何类型(包括将来的类型)来重用它,并且全部
13、具有编译器支持和类型安全。因为泛型代码不会强行对值类型进行装箱和取消装箱,或者对引用类型进行向下强制类型转换,所以性能得到显著提高。对于值类型,性能通常会提高200%;对于引用类型,在访问该类型时,可以预期性能最多提高100%(当然,整个应用程序的性能可能会提高,也可能不会提高)。第2章1.线性表线性表是最简单、最基本、最常用的数据结构。线性表是线性结构的抽象(Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线性关系。这种一对一的关系指的是数据元素之间的位置关系,即:(1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素;(2)除最后一个位置的数据元素外,
14、其它数据元素位置的后面都只有一个元素。也就是说,数据元素是一个接一个的排列。因此,可以把线性表想象为一种数据元素序列的数据结构。2.线性表的定义线性表(List)是由 n(n0)个相同类型的数据元素构成的有限序列。对于这个定义应该注意两个概念:一是“有限”,指的是线性表中的数据元素的个数是有限的,线性表中的每一个数据元素都有自己的位置(Position)。二是“相同类型”,指的是线性表中的数据元素都属于同一种类型。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 9 页 -3.顺序表的定义在计算机内,保存线性表最简单、最自然的方式,就是把表中的元素一个接一个地放进顺序的存储单元,这
15、就是线性表的顺序存储(Sequence Storage)。线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表(Sequence List),顺序表的特点是表中相邻的数据元素在内存中存储位置也相邻。4.链式存储(Linked Storage)这样的线性表叫链表(Linked List)。链表不要求逻辑上相邻的数据元素在物理存储位置上也相邻,因此,在对链表进行插入和删除时不需要移动数据元素,但同时也失去了顺序表可随机存储的优点。5.链表是用一组任意的存储单元来存储线性表中的数据元素(这组存储单元可以是连续的,也可以是不连续的)。两部分信息组成该
16、数据元素的存储映像(Image),称为结点(Node)。把存储据元素本身信息的域叫结点的数据域(Data Domain),把存储与它相邻的数据元素的存储地址信息的域叫结点的引用域(Reference Domain)。因此,线性表通过每个结点的引用域形成了一根“链条”,这就是“链表”名称的由来。如果结点的引用域只存储该结点直接后继结点的存储地址,则该链表叫单链表(Singly Linked List)。第三章栈和队列栈和队列是非常重要的两种数据结构,在软件设计中应用很多。栈和队列也是线性结构,线性表、栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而
17、栈和队列的操作受到限制。栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行,所以,把栈和队列称为操作受限的线性表。栈分为顺序栈和链栈。顺序栈用数组表示,链栈使用单链来表示,是单链的一种简化。2.队列队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表。把进行插入操作的表尾称为队尾(Rear),把进行其它操作的头部称为队头(Front)。当对列中没有数据元素时称为空对列(Empty Queue)。队列通常记为:Q=(a1,a2,an),Q 是英文单词queue的第 1个字母。a1为队头元素,an 为队尾元素。这n 个元素是按照a1,a2,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构概念整理参考 2022 数据结构 概念 整理 参考
限制150内