第一讲-数据结构基本概念
- 格式:ppt
- 大小:719.00 KB
- 文档页数:55
数据结构知识点概括第一章概论数据就是指能够被计算机识别、存储和加工处理的信息的载体。
数据元素是数据的基本单位,可以由若干个数据项组成。
数据项是具有独立含义的最小标识单位。
数据结构的定义:·逻辑结构:从逻辑结构上描述数据,独立于计算机。
·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:是逻辑结构用计算机语言的实现。
·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据的操作。
定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用的有:检索、插入、删除、更新、排序。
数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
·结构类型:由用户借助于描述机制定义,是导出类型。
抽象数据类型ADT:·是抽象数据的组织和与之的操作。
相当于在概念层上描述问题。
·优点是将数据和操作封装在一起实现了信息隐藏。
程序设计的实质是对实际问题选择一种好的数据结构,设计一个好的算法。
算法取决于数据结构。
算法是一个良定义的计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法的好坏的因素:·算法是正确的;·执行算法的时间;·执行算法的存储空间(主要是辅助存储空间);·算法易于理解、编码、调试。
时间复杂度:是某个算法的时间耗费,它是该算法所求解问题规模n的函数。
渐近时间复杂度:是指当问题规模趋向无穷大时,该算法时间复杂度的数量级。
评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度。
算法中语句的频度不仅与问题规模有关,还与输入实例中各元素的取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
数据结构的基本概念
数据结构是计算机科学中用于组织和管理数据的方式。
它涉及将数据元素组织成特定的方式,以便能够有效地存储、检索和操作数据。
数据结构有很多种类,其中一些常见的包括数组、链表、栈、队列、树和图。
每种数据结构都有其特定的特点和应用场景。
数组是一种线性数据结构,它将相同类型的数据元素存储在连续的内存位置上,并使用索引来访问和操作数据。
链表也是一种线性数据结构,它由节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。
链表的优点是可以动态地添加或删除节点,但访问元素时需要遍历链表。
栈是一种后进先出(LIFO)的数据结构,只能在一端进行插入和删除操作。
常见的应用场景包括函数调用、表达式求值和浏览器的历史记录。
队列是一种先进先出(FIFO)的数据结构,允许在一端插入元素,在另一端删除元素。
队列常用于实现任务调度、消息传递和缓冲区管理等场景。
树是一种非线性的数据结构,它由节点和边组成,每个节点可以有零个或多个子节点。
树的应用包括文件系统、数据库索引和组织结构图。
图是由节点和边组成的一种非线性数据结构,节点之间的边可以是有向的或无向的。
图的应用包括社交网络、路由算法和地图导航。
了解不同的数据结构以及它们的特点和应用场景,可以帮助开发者选择合适的数据结构来解决问题,并提高程序的效率和性能。
第1章绪论1.1 什么是数据结构数据与数据之间的关系1.2 基本概念和术语1.基本定义(1).数据(Data) :是客观事物的符号表示。
在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element) :是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。
(2)数据项(Data Item):一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
数据项是对客观事物某一方面特性的数据描述。
数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。
2.举例如字符集合C={‘A’,‘B’,‘C’,…}--C表示字符对象;A ,B等表示数据元素;再如学生集合Students={“Zhangsan”, “Lisi”,…}Zhangsan(ID,name,age,grade,…)……--Students表示学生对象;“Zhangsan”、“Lisi”表示数据元素;Zhangsan的ID、name、age等表示数据项。
3.数据结构的形式定义数据结构的形式定义是一个二元组:Data-Structure=(D,S)其中:D是数据元素的有限集,S是D上关系的有限集4.逻辑结构与物理结构(1)数据元素之间的关系可以是元素之间代表某种含义的自然关系,也可以是为处理问题方便而人为定义的关系,这种自然或人为定义的“关系”称为数据元素之间的逻辑关系,相应的结构称为逻辑结构。
(2)数据结构在计算机中的表示(映像)称为数据的物理结构。
数据结构的存储方式1)顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。
2)链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表示数据元素之间的逻辑结构(关系)。
3)例:设有数据集合A={3.0,2.3,5.0,-8.5,11.0} ,两种不同的存储结构。
数据结构的定义数据结构是计算机中存储、组织数据的方式,它定义了数据元素之间的逻辑关系以及如何在计算机中表示这些关系。
提高算法效率合适的数据结构可以显著提高算法的执行效率,降低时间复杂度和空间复杂度。
简化程序设计数据结构为程序设计提供了统一的抽象层,使得程序员可以更加专注于问题本身,而不是底层的数据表示和访问细节。
便于数据管理和维护良好的数据结构设计可以使得数据的管理和维护变得更加方便和高效。
数据结构的定义与重要性线性数据结构中的元素之间存在一对一的关系,如数组、链表、栈和队列等。
线性数据结构非线性数据结构中的元素之间存在一对多或多对多的关系,如树、图等。
非线性数据结构静态数据结构在程序运行期间不会发生改变,如数组、静态链表等。
静态数据结构动态数据结构在程序运行期间可以动态地添加或删除元素,如链表、动态数组等。
动态数据结构数据结构的分类01020304在计算机科学中,数据结构是算法设计和分析的基础,广泛应用于操作系统、编译原理、数据库等领域。
计算机科学在软件工程中,数据结构是软件设计和开发的重要组成部分,用于实现各种软件功能和性能优化。
软件工程在人工智能中,数据结构用于表示和处理各种复杂的数据和知识,如神经网络、决策树等。
人工智能在大数据处理中,数据结构用于高效地存储、管理和分析海量数据,如分布式文件系统、NoSQL 数据库等。
大数据处理数据结构的应用领域0102线性表是具有n个数据元素的有限序列创建、销毁、清空、判空、求长度、获取元素、修改元素、插入元素、删除元素等线性表的定义线性表的基本操作线性表的定义与基本操作03用一段地址连续的存储单元依次存储线性表的数据元素顺序存储结构的定义可以随机存取,即可以直接通过下标访问任意元素;存储密度高,每个节点只存储数据元素顺序存储结构的优点插入和删除操作需要移动大量元素;空间利用率不高,需要提前分配存储空间顺序存储结构的缺点链式存储结构的定义01用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的链式存储结构的优点02插入和删除操作不需要移动大量元素,只需要修改指针;空间利用率高,不需要提前分配存储空间链式存储结构的缺点03不能随机存取,只能通过从头节点开始遍历的方式访问元素;存储密度低,每个节点除了存储数据元素外,还需要存储指向下一个节点的指针0102定义栈(Stack)是一种特殊的线性数据结构,其操作只能在一端(称为栈顶)进行,遵循后进先出(LIFO)的原则。
实用标准文档文案大全第1章数据结构基础结构之美无处不在:说到结构,任何一件事物都有自己的结构,就如可以看得见且触摸得到的课桌、椅子,还有看不见却也存在的化学中的分子、原子。
可见,一件事物只要存在,就一定会有自己的结构。
一幅画的生成,作家在挥毫泼墨之前,首先要在数尺素绢之上做结构上的统筹规划、谋篇布局。
一件衣服的制作,如果在制作之前没有对衣服的袖、领、肩、襟、身等各个部位周密筹划,形成一个合理的结构系统,便无法缝制出合体的衣服。
还有教育管理系统的结构、通用技术的学科结构和课堂教学结构等。
试想一下,管理大量数据是否也需要用到数据结构呢?本章知识要点:数据结构的基本概念数据类型和抽象数据类型算法和算法分析1.1 数据结构的基本概念计算机科学是一门研究数据表示和数据处理的科学。
数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。
无论是进行科学计算,还是数据处理、过程控制、对文件的存储和检索以及数据库技术等计算机应用,都是对数据进行加工处理的过程。
因此,要设计出一个结构良好而且效率较高的程序,必须研究数据的特性、数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。
计算机在发展的初期,其应用范围是数值计算,所处理的数据都是整型、实型和布尔型等简单数据,以此为加工、处理对象的程序设计称为数值型程序设计。
随着计算技术的发展,计算机逐渐进入到商业、制造业等其他领域,广泛地应用于数据处理和过程控制中。
与此相对应,计算机所处理的数据也不再是简单的数值,而是字符串、图形、图像、语音和视频等复杂的数据。
这些复杂的数据不仅量大,而且具有一定的结构。
例如,一幅图像是一个由简单数值组成的矩阵,一个图形中的几何坐标可以组成表。
此外,语言编译过程中所使用的栈、符号表和语法树,操作系统中用到的队列、磁盘目录树等,都是有结构的数据。
数据结构所研究的就是这些有结构的数据,因此,数据结构知识无论是对研制系统软件还是对开发应用软件来说,都非常重要,是学习软件知识和提高软件设计水平的重要基础。
第1章绪论1.1 数据结构的基本概念数据元是数据的基本单位,一个数据元素可由若干个数据项完成,数据项是构成数据元素的不可分割的最小单位。
例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
数据类型是一个值的集合和定义在此集合上一组操作的总称。
•原子类型:其值不可再分的数据类型•结构类型:其值可以再分解为若干成分(分量)的数据类型•抽象数据类型:抽象数据组织和与之相关的操作抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。
抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。
通常用(数据对象、数据关系、基本操作集)这样的三元组来表示。
#关键词:数据,数据元素,数据对象,数据类型,数据结构数据结构的三要素:1.逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据,独立于计算机。
分为线性结构和非线性结构,线性表、栈、队列属于线性结构,树、图、集合属于非线性结构。
2.存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构,包括数据元素的表示和关系的表示,依赖于计算机语言,分为顺序存储(随机存取)、链式存储(无碎片)、索引存储(检索速度快)、散列存储(检索、增加、删除快)。
3.数据的运算:包括运算的定义和实现。
运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
1.2 算法和算法评价算法是对特定问题求解步骤的一种描述,有五个特性:有穷性、确定性、可行性、输入、输出。
一个算法有零个或多个的输入,有一个或多个的输出。
时间复杂度是指该语句在算法中被重复执行的次数,不仅依赖于问题的规模n,也取决于待输入数据的性质。
一般指最坏情况下的时间复杂度。
空间复杂度定义为该算法所耗费的存储空间。
算法原地工作是指算法所需辅助空间是常量,即O(1)。
第2章线性表2.1 线性表的定义和基本操作线性表是具有相同数据类型的n个数据元素的有限序列。
第一章数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。
2。
数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。
(补充:一个数据元素可由若干个数据项组成。
数据项是数据的不可分割的最小单位。
)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
(有时候也叫做属性。
)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据的逻辑结构:数据的逻辑结构是指数据元素之间存在的固有逻辑关系,常称为数据结构。
数据的逻辑结构是从数据元素之间存在的逻辑关系上描述数据与数据的存储无关,是独立于计算机的。
依据数据元素之间的关系,可以把数据的逻辑结构分成以下几种:1.集合:数据中的数据元素之间除了“同属于一个集合“的关系以外,没有其他关系.2.线性结构:结构中的数据元素之间存在“一对一“的关系。
若结构为非空集合,则除了第一个元素之外,和最后一个元素之外,其他每个元素都只有一个直接前驱和一个直接后继。
3。
树形结构:结构中的数据元素之间存在“一对多“的关系.若数据为非空集,则除了第一个元素(根)之外,其它每个数据元素都只有一个直接前驱,以及多个或零个直接后继。
4.图状结构:结构中的数据元素存在“多对多"的关系.若结构为非空集,折每个数据可有多个(或零个)直接后继.(2)数据的存储结构:数据元素及其关系在计算机内的表示称为数据的存储结构。
想要计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。
逻辑结构可以映射为以下两种存储结构:1.顺序存储结构:把逻辑上相邻的数据元素存储在物理位置也相邻的存储单元中,借助元素在存储器中的相对位置来表示数据之间的逻辑关系.2.链式存储结构:借助指针表达数据元素之间的逻辑关系。
不要求逻辑上相邻的数据元素物理位置上也相邻。
“数据结构知识导入全程目标•数据结构的基本概念–逻辑结构–物理结构–运算结构•数据结构的基本实现–堆栈–队列–链表–二叉树知识讲解数据结构的基本概念•数据结构是相互之间存在一种或多种特定关系的数据的集合•数据结构是计算机存储、组织数据的方式•数据结构的选择直接影响计算机程序的运行效率(时间复杂度)和存储效率(空间复杂度)•计算机程序设计=算法+数据结构•数据结构的三个层次–抽象层——逻辑结构–结构层——物理结构–实现层——运算结构识讲解•集合结构(集)–结构中的数据元素除了同属于一个集合外没有其它关系识讲解•线性结构(表)–结构中的数据元素具有一对一的前后关系识讲解•树型结构(树)–结构中的数据元素具有一对多的父子关系知识讲解实现双向线性链表•删除节点识讲解•树形结构的最简模型,每个节点最多有两个子节点•每个子节点有且仅有一个父节点,整棵树只有一个根节点•具有递归的结构特征,用递归的方法处理,可以简化算法•三种遍历序–前序遍历:D-L-R–中序遍历:L-D-R–后序遍历:L-R-D识讲解•二叉树的一般形式–根节点、枝节点和叶节点–父节点和子节点–左子节点和右子节点–左子树和右子树–大小和高度(深度)识讲解•满二叉树–每层节点数均达到最大值–所有枝节点均有左右子树知识讲解二叉树•完全二叉树–除最下层外,各层节点数均达到最大值–最下层的节点都连续集中在左边识讲解•顺序存储–从上到下、从左到右,依次存放–非完全二叉树需用虚节点补成完全二叉树识讲解•链式存储–二叉链表,每个节点包括三个域,一个数据域和两个分别指向其左右子节点的指针域识讲解•链式存储–三叉链表,每个节点包括四个域,一个数据域、两个分别指向其左右子节点的指针域和一个指向其父节点的指针域知识讲解实现有序二叉树•有序二叉树亦称二叉搜索树,若非空树则满足:–若左子树非空,则左子树上所有节点的值均小于等于根节点的值–若右子树非空,则右子树上所有节点的值均大于等于根节点的值–左右子树亦分别为有序二叉树•基于有序二叉树的排序和查找,可获得O(logN)级的平均时间复杂度知识讲解逻辑结构•网状结构(图)–结构中的数据元素具有多对多的交叉映射关系识讲解•顺序结构–结构中的数据元素存放在一段连续的地址空间中识讲解•顺序结构–随机访问方便,空间利用率低,插入删除不方便识讲解•链式结构–结构中的数据元素存放在彼此独立的地址空间中–每个独立的地址空间称为节点–节点除保存数据外,还需要保存相关节点的地址识讲解•链式结构–插入删除方便,空间利用率高,随机访问不方便知识讲解逻辑结构与物理结构的关系•每种逻辑结构采用何种物理结构实现,并没有一定之规,通常根据实现的难易程度,以及在时间和空间复杂度方面的要求,选择最适合的物理结构,亦不排除复合多种物理结构实现一种逻辑结构的可能知识讲解运算结构•创建与销毁–分配资源、建立结构、释放资源•插入与删除–增加、减少数据元素•获取与修改–遍历、迭代、随机访问•排序与查找–算法应用知识讲解数据结构的基本实现•堆栈–基于顺序表的实现–基于链式表的实现•队列–基于顺序表的实现–基于链式表的实现•链表–双向线性链表的实现•二叉树–有序二叉树(二叉搜索树)的实现知识讲解堆栈•后进(压入/push)先出(弹出/pop)识讲解•初始化空间、栈顶指针、判空判满识讲解•动态分配、栈顶指针、注意判空知识讲解队列•先进(压入/push)先出(弹出/pop)识讲解•初始化空间、前弹后压、循环使用、判空判满识讲解•动态分配、前后指针、注意判空知识讲解链表•地址不连续的节点序列,彼此通过指针相互连接•根据不同的结构特征,将链表分为:–单向线性链表–单向循环链表–双向线性链表–双线循环链表–数组链表–链表数组–二维链表识讲解•单向线性链表识讲解•单向循环链表识讲解•双向线性链表识讲解•双向循环链表识讲解•数组链表识讲解•链表数组识讲解•二维链表识讲解•结构模型识讲解•插入节点。
数据结构的基本概念与分类数据结构是计算机科学中非常重要的概念,它是指数据元素之间的关系,以及对这些关系进行操作的方法。
在计算机程序设计中,数据结构的选择直接影响到程序的效率和性能。
因此,了解数据结构的基本概念和分类对于编写高效的程序至关重要。
一、基本概念1. 数据:数据是描述客观事物的符号,是计算机程序处理的对象,可以是数字、字符、图像等各种形式的符号。
2. 数据元素:数据元素是数据的基本单位,通常由一个或多个数据项组成,是数据结构中最小的单位。
3. 数据项:数据项是数据结构中不可分割的最小单位,是对数据元素的描述,可以是基本数据类型或其他数据结构。
4. 数据对象:数据对象是具有相同性质的数据元素的集合,是数据结构中的一个重要概念。
5. 数据结构:数据结构是指数据元素之间的关系以及对这些关系进行操作的方法,是数据的组织方式。
6. 数据结构的逻辑结构:数据结构的逻辑结构是指数据元素之间的逻辑关系,包括线性结构、树形结构、图形结构等。
7. 数据结构的物理结构:数据结构的物理结构是指数据在计算机内存中的存储方式,包括顺序存储结构和链式存储结构等。
二、分类根据数据元素之间的关系和操作方式,数据结构可以分为以下几类:1. 线性结构线性结构是最简单的数据结构,数据元素之间是一对一的关系,每个数据元素只有一个直接前驱和一个直接后继。
常见的线性结构包括数组、链表、栈和队列等。
- 数组:数组是由相同类型的数据元素按一定顺序排列而成的有限序列,可以通过下标直接访问元素。
- 链表:链表是由若干个节点组成的数据结构,每个节点包含数据元素和指向下一个节点的指针。
- 栈:栈是一种特殊的线性表,只能在表的一端进行插入和删除操作,遵循先进后出的原则。
- 队列:队列是一种先进先出的线性表,只能在表的一端进行插入操作,在另一端进行删除操作。
2. 树形结构树形结构是一种重要的非线性结构,数据元素之间存在一对多的关系,每个元素可以有多个子元素。
第一章绪论计算机科学是一门研究数据表示和数据处理的科学。
数据是计算机化的信息,它是计算机可以直接处理的最基本和最重要的对象。
无论是进行科学计算或数据处理、过程控制以及对文件的存储和检索及数据库技术等计算机应用领域中,都是对数据进行加工处理的过程。
因此,要设计出一个结构好效率高的程序,必须研究数据的特性及数据间的相互关系及其对应的存储表示,并利用这些特性和关系设计出相应的算法和程序。
1.1 数据结构的概念数据结构是计算机科学与技术专业的专业基础课,是十分重要的核心课程。
所有的计算机系统软件和应用软件都要用到各种类型的数据结构。
要想有效地使用计算机、充分发挥计算机的性能,还必须学习和掌握好数据结构的有关知识。
打好“数据结构”这门课程的扎实基础,对于学习计算机专业的其他课程,如操作系统、编译原理、数据库管理系统、软件工程、人工智能等都是十分有益的。
1.1.1 为什么要学习数据结构当我们使用计算机来解决一个具体问题时,一般需要经过下列几个步骤:首先要从该具体问题抽象出一个适当的数学模型,然后设计或选择一个解此数学模型的算法,最后编出程序进行调试、测试,直至得到最终的解答。
随着计算机应用领域的扩大和软、硬件的发展,非数值计算问题越来越显得重要。
据统计,当今处理非数值计算性问题占用了90%以上的机器时间。
这类问题涉及到的数据结构更为复杂,数据元素之间的相互关系一般无法用数学方程式加以描述。
因此,解决这类问题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构,才能有效地解决问题。
下面所列举的就是属于这一类的具体问题。
[例1]学生信息检索系统。
当我们需要查找某个学生的有关情况的时候;或者想查询某个专业或年级的学生的有关情况的时候,只要我们建立了相关的数据结构,按照某种算法编写了相关程序,就可以实现计算机自动检索。
由此,可以在学生信息检索系统中建立一张按学号顺序排列的学生信息表和分别按姓名、专业、年级顺序排列的索引表,如图1.1所示。
第一章概论1·1 数据结构的概念一、基本概念和术语●数据(Data):是指所有能输入到计算机中并被计算机程序处理的符号的总称。
是计算机加工的“原料”。
●数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
有些情况下,数据元素也称为元素、结点、顶点、记录。
有时数据元素可以由若干数据项(也称为字段、域、属性)组成,数据项是数据的有独立含义的最小标识单位。
●数据类型:(Data Type):是一个值的集合和定义在这个值集上的所有的操作。
例如,整数类型。
数据类型可分为:原子数据类型和结构数据类型。
原子类型的值是不可分解的,结构类型的值是由若干成分按某种结构组成的。
二、数据的三个层次数据是计算机加工的对象,是数据元素的集合;数据元素是数据的基本单位,常称为结点、元素、记录等,作为一个整体出现;数据项是数据的最小不可分割的单位。
三、什么是数据结构(Data Structure):数据之间的相互关系,即数据的组织形式。
包括以下三方面:①数据元素之间的逻辑关系,也称为数据的逻辑结构;②数据元素及其关系在计算机存储器内的表示,称为数据的存储结构;③数据的运算,即对数据施加的操作。
四、数据的逻辑结构分两类:线性结构和非线性结构。
(有的教材称四种结构: 集合、线性结构、树形结构、图形结构或网状结构)五、数据的存储结构:数据结构在计算机中的表示(又称映象)称为数据的物理结构,又称存储结构:数据元素及其关系在计算机存储器的表示。
用于表示数据元素的位串称之为元素或结点,用于表示数据项的位串称之为数据域。
算法的设计取决于选定的数据逻辑结构,而算法的实现依赖于采用的存储结构。
数据有四种存储结构:①顺序存储结构:把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。
通常顺序存储结构是借助于语言的数组来描述的。
②链式存储结构:不要求逻辑上相邻的结点物理上也相邻,结点间的逻辑关系是由附加的指针字段表示的,通常要借助于语言的指针类型来描述。
数据结构笔记基础:数据结构与算法(一)数据结构基本概念数据(data):是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号总称数据元素(data element):是数据的基本单位,在计算机中通常被当做一个整体进行考虑和处理数据对象(data object):性质相同的数据元素的集合,是数据的一个子集数据结构(data structure):相互之间存在一种或多种特定关系的数据元素的集合4类基本结构:集合、线性结构、树形结构、图形(网状)结构数据结构的形式定义为数据结构是一个二元组Data Structure = (D,S),其中D是数据元素的有限集,S是D上关系的有限集数据结构定义中的“关系"描述的是数据元素之间的逻辑关系,因此又称为数据的逻辑结构数据结构在计算机中的表示(映像)称为物理结构(存储结构)计算机中表示信息的最小单位是二进制中的一位,叫做位(bit),一到若干位组成一个位串表示一个数据元素,这个位串称为元素或结点数据结构之间关系在计算机中的表示有两种:顺序映像、非顺序映像,并由此得到两种存储结构:顺序存储、链式存储,前者运用相对位置表示数据元素间的逻辑结构,后者借助指针任何一个算法的设计取决于数据(逻辑)结构,而实现依赖于存储结构数据类型是一个值的集合和定义在这个值集上的一组操作的总称数据类型分两种:原子类型、结构类型,前者不可分解(例如int、char、float、void ),后者结构类型由若干成分按某种结构组成,可分解,成分既可以是非结构的也可以是结构的(例:数组)抽象数据类型(Abstract Data Type ):是指一个数学模型及定义在该模型上的一组操作(P8)抽象数据类型格式如下:ADT抽象数据类型名{数据对象:<数据对象的定义>数据关系:<数据关系的定义>数据操作:〈数据操作的定义>}ADT抽象数据类型名基本操作格式如下:基本操作名(参数表)初始条件:〈初始条件描述〉操作结果:〈操作结果描述>多形数据类型(polymorphic data type):是指其值得成分不确定的数据类型(P9)抽象数据类型可由固有数据类型来表示和实现(二)算法(概念)和算法分析(时、空性能)算法(algorithm):对特定问题求解步骤的一种描述算法5特性:有穷、确定、可行、输入、输出1、有穷性:算法必须在可接受的时间内执行有穷步后结束2、确定性:每条指令必须要有确切含义,无二义性,并且只有唯一执行路径,即对相同的输入只能得相同输出3、可行性:算法中的操作都可通过已实现的基本运算执行有限次来完成4、输入:一个算法有一到多个输入,并取自某个特定对象合集5、输出:一个算法有一到多个输出,这些输出与输入有着某些特定关系的量算法设计要求(好算法):正确性、可读性、健壮性、效率与低存储需求健壮性是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式.算法效率的度量:(1)事后统计:程序运行结束后借助计算机内部计时功能,缺点一是必须先运行依据算法编制的程序,二是受限于计算机软硬件,导致掩盖了算法本身的优劣(2)事前分析估计:消耗时间影响因素:算法策略、问题规模、编程语言、编译程序产生的机器码质量、机器执行指令的速度撇开各种影响因素只考虑问题的规模(通常用整数量n表示),记为问题规模的函数算法时间取决于控制结构(顺序,分支,循环)和固有数据类型操作的综合效果书写格式:T(n)= O(f(n))f(n)为n的某个函数时间复杂度:算法的渐近时间复杂度(asymptotic time complexity),它表示随问题规模的增大,算法执行时间的增长率和f(n)的增长率相同以循环最深层原操作为度量基准频度:该语句重复执行的次数算法的存储空间需求:空间复杂度(space complexity):算法所需存储空间度量,记作S(n)= O(f(n)),其中n为问题规模的大小一、线性表(一)线性表基本概念线性表(linear_list):n个数据元素的有限序列结构特点:存在唯一的被称作“第一个”、“最后一个"的数据元素,且除了第一个以外每个元素都有唯一前驱,除最后一个以外都有唯一后继在复杂线性表中存在:数据项-〉记录-〉文件,例如每个学生情况为一个记录,它由学号、性别。