数据结构 第一章(学习笔记)

数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。

1.掌握数据、数据元素、抽象数据类型、数据结构、数据的逻辑结构与存储结构等概念。
数据(Data):是客观事物的符号表示。在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element):是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理,有时也称之为结点、顶点或记录。
数据项(Data Item):是数据元素的组成部分,是对客观事物某一方面特性的数据描述,是数据结构中讨论的最小单位,一个数据元素是由若干数据项组成;数据项是数据的不可分割的最小单位。
数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。如字符集合C={A、B、C…}。
数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。
根据数据元素之间关系的不同特性,通常有下列4类基本结构:
(1)集合:结构中数据元素之间除了“同属于一个集合”的关系外,别无其他关系;
(2)线性结构:结构中的数据元素之间存在一个对一个的关系;
(3)树形结构:结构数据元素之间存在一个对多个的关系;
(4)图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系。
数据结构的形式定义为:数据结构是一个二元组:Data_Structure=(D,S) 其中:D是数据元素的有限级,S是D上关系的有限级。
逻辑结构:是对数据元素之间存在的逻辑关系的描述,它可以用一个数据元素的集合和定音在此集合上的若干关系表示。
数据结构在计算机中的表示(又称映像)称为数据的
物理结构
,又称存储结构。它包含数据元素的表示和关系的表示。
在计算机中表示信息的最小单位是二进制数的一位,叫做位(Bit)
用一个由若干组合起来形成的一个位串表示一个数据元素(如用一个字长的位串表示一个整数,用8位二进制数表示一个字符等),通常称这个位串为元素(Element)结点(Node)。当数据元素由若干数据项组成时,位串中对于各个数据项的子位串称为数据域。因此,元素或结点可看作是数据元素在计算机中的映像。
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像非顺序映像,并由此得到两种不同的存储结构:顺序存储结构链式存储结构
顺序映像的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;
非顺序映像的特点是借助指示元素存储地址的**指针(Pointer)**表示数据元素之间的逻辑关系。
数据类型(Data Type):指的是一个值的集合和定义在该值集合上的一组操作的总称。
(1)数据类型是和数据结构密切相关的一个概念。在C语言中数据类型有:基本类型和构造类型。
(2)数据结构不同于数据类型,也不同于数据对象,它不仅要描述数据类型的数据对象,而且要描述数据对象各元素之间的相互关系。
数据结构的主要运算包括:
(1)建立(Create)一个数据结构
(2)消除(Destroy)一个数据结构
(3)从一个数据结构中删除(Delete)一个数据元素
(4)把一个数据元素插入(Insert)到一个数据结构中
(5)对一个数据结构进行访问(Access)
(6)对一个数据结构(中的数据元素)进行修改(Modify)
(7)对一个数据结构进行排序(Sort)
(8)对一个数据结构进行查找(Search)
抽象数据类型(Abstract Data Type,简称ADT):是指一个数学模型以及定义在该模型上的一组操作。
ADT的形式定义是三元组:ADT=(D,S,P),其中:D是数据对象,S是D上的关系集,P是对D的基本操作集。
ADT的一般定义形式是:
ADT 抽象数据类型名{
数据对象:<数据对象的定义>(伪码描述)
数据关系:<数据关系的定义>(伪码描述)
基本操作:<基本操作的定义>(参数表)
初始条件:<初始条件的描述>
操作结果:<操作结果的描述>

}ADT 抽象数据类型名
(1)初始条件:描述操作执行之前数据结构和参数应满足的条件;若不满足,则操作失败,返回相应的出错信息。
(2)操作结果:描述操作正常完成之后,数据结构的变化状况和应返回的结果。
2.了解算法的定义、特性、算法的时间复杂度、算法的空间复杂度等概念,会对算法进行时间复杂度。空间复杂度分析。
算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
算法具有以下五个特性
(1)有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
(2)确定性:算法中每一条指令必须有确切的含义,不存在二义性,且算法只有一个入口和一个出口。
(3)可行性:一个算法是能行的,即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。
(4)输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
(5)输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。
算法的设计目标
(1)正确性(Correctness):算法应满足具体问题的需求。
(2)可读性(Readability):算法应容易供人阅读和交流。可读性好的算法有助于对算法的理解和修改。
(3)健壮性(Robustness):算法应具有容错处理。当输入非法或错误数据时,算法应能适应地作出反应或进行处理,而不会产生莫名被其妙的输出结果。
(4)效率与存储需求:效率指的是算法执行的时间;存储量需求值算法执行过程中所需要的最大存储空间。一般地,这两者与问题的规模有关。
算法的效率分析
算法分析主要包括时间复杂度分析和空间复杂度分析。
算法执行时间需通过依据该算法编制的程序在计算机上运行所消耗的而时间度量。其方法通常有两种:
**(1)事后统计:**计算机执行某个算法所消耗的时间统计。(存在问题:必须先运行依据算法编制的程序;依赖软硬件环境,容易掩盖算法本身的优劣;没有实际价值。)
**(2)事前分析:**求出该算法 的一个时间界限函数。
时间复杂度:
一套图搞懂“时间复杂度”
**空间复杂度:**是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。记作:S(n)=O(f(n)) 其中:n为问题的规模。
该存储空间一般包括三个方面:
(1)指令、常数、变量所占用的存储空间;
(2)输入数据所占用的存储空间;
(3)辅助存储空间。

猜你喜欢

转载自blog.csdn.net/qq_45876197/article/details/108446495