数据结构学习笔记1
文章目录
1.数据结构概述
数据结构:是相互之间存在一种或多种特定关系的数据元素集合
1.1基本概念和术语
1.1.1数据
数据:描述客观事物的符号,是计算机中可以操作的对象,能被计算机识别,并输入给计算机处理的符号集合。
数据不仅包括整型,浮点型,还包括字符及声音、图像、视频等非数值类型。
简单来说:数据就是符号,而且这些符号必须具备两个前提
①可以输入到计算机中
②能被计算机程序处理
1.1.2数据元素
数据元素:是组成数据的、具有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
比如:在人类中,数据元素是人。
在动物类中,数据元素是猫、狗、狼…等。
1.1.3数据项
数据项:一个元素由若干个数据项组成。
在数据结构中数据项是数据不可分割的最小单位
数据项是数据的最小单位,但是数据元素才是数据结构中建立数据模型的着眼点
例如:人这样的数据元素可以有手、脚、眼睛、鼻子、嘴巴、耳朵这些数据项
1.1.4数据对象
数据对象:是性质相同的数据元素的集合,是数据的子集。
性质相同指数据元素具有相同数量和类型的数据项
比如人都有姓名、生日、性别等相同的数据项。
既然数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们将数据对象简称为数据。
1.1.5数据结构
结构:简单的理解就是关系,严格来说是指各个组成部分相互搭配和排列的方式。
不同数据元素之间不是独立的,而是存在特定的关系,将这些关系成为结构
数据结构:就是相互之间存在一种或多种特定关系的数据元素的集合
在计算机中,数据元素并不是孤立杂乱无序的,而是具有内在联系的数据集合。
数据元素之间存在的一种或多种特定关系,也就是数据的组织形式
1.2逻辑结构和物理结构
逻辑结构是面向问题的,物理结构是面向计算机的,其基本目标就是将数据及其逻辑关系存储到计算机的内存中
1.2.1逻辑结构
逻辑结构:是指数据对象中数据元素之间的相互关系
逻辑结构分为以下四种
①集合结构
数据结构中的集合结构类似于数学中的集合。
**集合结构中的数据元素除了同属一个集合外,他们之间没有其他关系。**各个元素是’平等的’,它们的共同属性是"同属于一个集合"。
如图所示:
②线性结构
线性结构:线性结构中的数据元素之间是一对一的关系
如图所示:
③树形结构
树形结构:树形结构中的数据元素之间存在一种一对多的层次关系
如图所示:
④图形结构
图形结构:图形结构的数据元素是多对多的关系
如图所示:
注意事项:
使用示意图表示数据的逻辑结构时要注意两点:
①将每个元素看作一个结点,用圆圈表示
②元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,用带箭头的连线表示
1.2.2物理结构
物理结构:指数据的逻辑结构在计算机中的存储形式
数据是数据元素的集合,根据物理结构的定义,实际上就是如果把数据元素存储到计算机的存储器中,存储器主要是针对内存而言。、
外部存储器的数据组织通常用文件结构来描述。
数据的存储结构应正确反映数据元素之间的逻辑关系,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
数据元素的存储结构形式有两种:顺序存储和链式存储
①顺序存储结构
顺序存储结构:把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
这种数据结构说白了就是,排队占位。大家都按顺序排好,每个人占一小段空间谁也别插谁的队。
数组就是这样的顺序存储结构。
当你告诉计算机,你要建立一个有9个整型数据的数组时,计算机就在内存中开辟一段连续的空间,按照一个整型所占的大小乘以9.
第一个数组数据放在第一个位置,第二个数组数据放在第二个位置…
如下图所示:
②链式存储结构
链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的
面对时常要变化的结构,顺序存储是不科学的,所以就用到了链式存储。
数据元素的存储关系并不能反应其逻辑关系,因此需要一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。
如图所示:
1.3数据类型
数据类型是按照值的不同进行划分的。
在高级语言中,每个变量、常量、和表达式都有各自的取值范围。
类型就用来说明变量或表达式的取值范围和能进行的操作
例如在JAVA语言中声明了变量int a,b这就意味着再给变量a和b赋值时不能超出int的取值范围,变量a和b之间的运算只能时int类型允许的运算,否则就会出现错误
在JAVA语言中,数据类型可以分为两类:
①基本数据类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。
基本数据类型有:byte、short、int、long、float、double、char、boolean八种
②引用数据类型:引用数据类型建立在基本数据类型的基础上。引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型和枚举类型。
引用数据类型有:数组、类和接口。
抽象数据类型
抽象数据类型(Abstract Data Type,ADT)是计算机科学中具有类似行为的特定类别的数据结构的数学模型,或者具有类似语义的一种或多种程序设计语言的数据类型。
抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性
抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现作为一个独立的单元,从而使具体实现过程隐藏起来。
描述抽象数据类型的标准格式如下:
ADT 抽象数据类型名
Data
数据元素之间的逻辑关系定义
Operation
操作1
初始条件
操作结果描述
操作2
......
操作n
......
endADT